24 #ifndef NMODL_AST_NODE_HPP 25 #define NMODL_AST_NODE_HPP 49 virtual ~Node() =
default;
57 bool is_node() const noexcept
override {
return true; }
107 return std::static_pointer_cast<
Node>(shared_from_this());
114 return std::static_pointer_cast<
const Node>(shared_from_this());
155 #endif // !NMODL_AST_NODE_HPP 156 #ifndef NMODL_AST_STATEMENT_HPP 157 #define NMODL_AST_STATEMENT_HPP 237 return std::static_pointer_cast<
Statement>(shared_from_this());
244 return std::static_pointer_cast<
const Statement>(shared_from_this());
285 #endif // !NMODL_AST_STATEMENT_HPP 286 #ifndef NMODL_AST_EXPRESSION_HPP 287 #define NMODL_AST_EXPRESSION_HPP 372 return std::static_pointer_cast<
Expression>(shared_from_this());
379 return std::static_pointer_cast<
const Expression>(shared_from_this());
420 #endif // !NMODL_AST_EXPRESSION_HPP 421 #ifndef NMODL_AST_BLOCK_HPP 422 #define NMODL_AST_BLOCK_HPP 447 virtual ~
Block() =
default;
455 throw std::runtime_error(
"get_parameters not implemented");
464 bool is_block() const noexcept
override {
return true; }
514 return std::static_pointer_cast<
Block>(shared_from_this());
521 return std::static_pointer_cast<
const Block>(shared_from_this());
562 #endif // !NMODL_AST_BLOCK_HPP 563 #ifndef NMODL_AST_IDENTIFIER_HPP 564 #define NMODL_AST_IDENTIFIER_HPP 648 return std::static_pointer_cast<
Identifier>(shared_from_this());
655 return std::static_pointer_cast<
const Identifier>(shared_from_this());
696 #endif // !NMODL_AST_IDENTIFIER_HPP 697 #ifndef NMODL_AST_NUMBER_HPP 698 #define NMODL_AST_NUMBER_HPP 722 virtual ~
Number() =
default;
730 throw std::runtime_error(
"to_double not implemented");
739 bool is_number() const noexcept
override {
return true; }
789 return std::static_pointer_cast<
Number>(shared_from_this());
796 return std::static_pointer_cast<
const Number>(shared_from_this());
837 #endif // !NMODL_AST_NUMBER_HPP 838 #ifndef NMODL_AST_STRING_HPP 839 #define NMODL_AST_STRING_HPP 880 explicit String(
const std::string &value);
885 virtual ~
String() =
default;
893 bool is_string() const noexcept
override {
return true; }
941 return std::static_pointer_cast<
String>(shared_from_this());
948 return std::static_pointer_cast<
const String>(shared_from_this());
966 const std::string &
get_value() const noexcept {
return value; }
977 token = std::make_shared<ModToken>(tok);
984 void set(std::string _value) { value = _value; }
989 void set_value(std::string value);
1033 std::string
eval()
const {
return value; }
1043 void set_parent_in_children();
1050 #endif // !NMODL_AST_STRING_HPP 1051 #ifndef NMODL_AST_INTEGER_HPP 1052 #define NMODL_AST_INTEGER_HPP 1093 explicit Integer(
int value,
const std::shared_ptr<Name> ¯o);
1154 return std::static_pointer_cast<
Integer>(shared_from_this());
1161 return std::static_pointer_cast<
const Integer>(shared_from_this());
1184 const std::shared_ptr<Name> &
get_macro() const noexcept {
return macro; }
1195 token = std::make_shared<ModToken>(tok);
1202 void set(
int _value) { value = _value; }
1207 void set_value(
int value);
1212 void set_macro(std::shared_ptr<Name> &¯o);
1217 void set_macro(
const std::shared_ptr<Name> ¯o);
1285 void set_parent_in_children();
1292 #endif // !NMODL_AST_INTEGER_HPP 1293 #ifndef NMODL_AST_FLOAT_HPP 1294 #define NMODL_AST_FLOAT_HPP 1329 explicit Float(
float value);
1332 virtual ~
Float() =
default;
1340 bool is_float() const noexcept
override {
return true; }
1388 return std::static_pointer_cast<
Float>(shared_from_this());
1395 return std::static_pointer_cast<
const Float>(shared_from_this());
1424 token = std::make_shared<ModToken>(tok);
1431 void set(
float _value) { value = _value; }
1436 void set_value(
float value);
1494 float eval()
const {
return value; }
1504 void set_parent_in_children();
1511 #endif // !NMODL_AST_FLOAT_HPP 1512 #ifndef NMODL_AST_DOUBLE_HPP 1513 #define NMODL_AST_DOUBLE_HPP 1555 explicit Double(
double value);
1560 virtual ~
Double() =
default;
1616 return std::static_pointer_cast<
Double>(shared_from_this());
1623 return std::static_pointer_cast<
const Double>(shared_from_this());
1652 token = std::make_shared<ModToken>(tok);
1659 void set(
double _value) { value = _value; }
1664 void set_value(
double value);
1722 double eval()
const {
return value; }
1732 void set_parent_in_children();
1739 #endif // !NMODL_AST_DOUBLE_HPP 1740 #ifndef NMODL_AST_BOOLEAN_HPP 1741 #define NMODL_AST_BOOLEAN_HPP 1832 return std::static_pointer_cast<
Boolean>(shared_from_this());
1839 return std::static_pointer_cast<
const Boolean>(shared_from_this());
1868 token = std::make_shared<ModToken>(tok);
1875 void set(
bool _value) { value = _value; }
1880 void set_value(
int value);
1938 bool eval()
const {
return value; }
1948 void set_parent_in_children();
1955 #endif // !NMODL_AST_BOOLEAN_HPP 1956 #ifndef NMODL_AST_NAME_HPP 1957 #define NMODL_AST_NAME_HPP 1993 explicit Name(
const std::shared_ptr<String> &value);
1998 virtual ~
Name() =
default;
2006 bool is_name() const noexcept
override {
return true; }
2054 return std::static_pointer_cast<
Name>(shared_from_this());
2061 return std::static_pointer_cast<
const Name>(shared_from_this());
2092 const std::shared_ptr<String> &
get_value() const noexcept {
return value; }
2108 void set_name(
const std::string &name)
override;
2114 token = std::make_shared<ModToken>(tok);
2120 void set_value(std::shared_ptr<String> &&value);
2125 void set_value(
const std::shared_ptr<String> &value);
2168 void set_parent_in_children();
2175 #endif // !NMODL_AST_NAME_HPP 2176 #ifndef NMODL_AST_PRIME_NAME_HPP 2177 #define NMODL_AST_PRIME_NAME_HPP 2217 explicit PrimeName(
const std::shared_ptr<String> &value,
2218 const std::shared_ptr<Integer> &order);
2281 return std::static_pointer_cast<
PrimeName>(shared_from_this());
2288 return std::static_pointer_cast<
const PrimeName>(shared_from_this());
2319 const std::shared_ptr<String> &
get_value() const noexcept {
return value; }
2324 const std::shared_ptr<Integer> &
get_order() const noexcept {
return order; }
2335 token = std::make_shared<ModToken>(tok);
2341 void set_value(std::shared_ptr<String> &&value);
2346 void set_value(
const std::shared_ptr<String> &value);
2351 void set_order(std::shared_ptr<Integer> &&order);
2356 void set_order(
const std::shared_ptr<Integer> &order);
2399 void set_parent_in_children();
2406 #endif // !NMODL_AST_PRIME_NAME_HPP 2407 #ifndef NMODL_AST_INDEXED_NAME_HPP 2408 #define NMODL_AST_INDEXED_NAME_HPP 2448 explicit IndexedName(
const std::shared_ptr<Identifier> &name,
2449 const std::shared_ptr<Expression> &length);
2503 return "IndexedName";
2510 return std::static_pointer_cast<
IndexedName>(shared_from_this());
2517 return std::static_pointer_cast<
const IndexedName>(shared_from_this());
2548 const std::shared_ptr<Identifier> &
get_name() const noexcept {
return name; }
2566 token = std::make_shared<ModToken>(tok);
2572 void set_name(std::shared_ptr<Identifier> &&name);
2577 void set_name(
const std::shared_ptr<Identifier> &name);
2583 void set_length(std::shared_ptr<Expression> &&length);
2588 void set_length(
const std::shared_ptr<Expression> &length);
2631 void set_parent_in_children();
2638 #endif // !NMODL_AST_INDEXED_NAME_HPP 2639 #ifndef NMODL_AST_VAR_NAME_HPP 2640 #define NMODL_AST_VAR_NAME_HPP 2666 std::shared_ptr<Integer>
at;
2677 explicit VarName(
const std::shared_ptr<Identifier> &name,
2678 const std::shared_ptr<Integer> &at,
2679 const std::shared_ptr<Expression> &index);
2738 return std::static_pointer_cast<
VarName>(shared_from_this());
2745 return std::static_pointer_cast<
const VarName>(shared_from_this());
2776 const std::shared_ptr<Identifier> &
get_name() const noexcept {
return name; }
2781 const std::shared_ptr<Integer> &
get_at() const noexcept {
return at; }
2786 const std::shared_ptr<Expression> &
get_index() const noexcept {
2799 token = std::make_shared<ModToken>(tok);
2805 void set_name(std::shared_ptr<Identifier> &&name);
2810 void set_name(
const std::shared_ptr<Identifier> &name);
2815 void set_at(std::shared_ptr<Integer> &&at);
2820 void set_at(
const std::shared_ptr<Integer> &at);
2825 void set_index(std::shared_ptr<Expression> &&index);
2830 void set_index(
const std::shared_ptr<Expression> &index);
2873 void set_parent_in_children();
2880 #endif // !NMODL_AST_VAR_NAME_HPP 2881 #ifndef NMODL_AST_ARGUMENT_HPP 2882 #define NMODL_AST_ARGUMENT_HPP 2922 explicit Argument(
const std::shared_ptr<Identifier> &name,
2923 const std::shared_ptr<Unit> &unit);
2984 return std::static_pointer_cast<
Argument>(shared_from_this());
2991 return std::static_pointer_cast<
const Argument>(shared_from_this());
3022 const std::shared_ptr<Identifier> &
get_name() const noexcept {
return name; }
3027 const std::shared_ptr<Unit> &
get_unit() const noexcept {
return unit; }
3038 token = std::make_shared<ModToken>(tok);
3044 void set_name(std::shared_ptr<Identifier> &&name);
3049 void set_name(
const std::shared_ptr<Identifier> &name);
3054 void set_unit(std::shared_ptr<Unit> &&unit);
3059 void set_unit(
const std::shared_ptr<Unit> &unit);
3102 void set_parent_in_children();
3109 #endif // !NMODL_AST_ARGUMENT_HPP 3110 #ifndef NMODL_AST_REACT_VAR_NAME_HPP 3111 #define NMODL_AST_REACT_VAR_NAME_HPP 3141 explicit ReactVarName(
const std::shared_ptr<Integer> &value,
3142 const std::shared_ptr<VarName> &name);
3196 return "ReactVarName";
3203 return std::static_pointer_cast<
ReactVarName>(shared_from_this());
3210 return std::static_pointer_cast<
const ReactVarName>(shared_from_this());
3228 const std::shared_ptr<Integer> &
get_value() const noexcept {
return value; }
3246 const std::shared_ptr<VarName> &
get_name() const noexcept {
return name; }
3257 token = std::make_shared<ModToken>(tok);
3264 void set_value(std::shared_ptr<Integer> &&value);
3269 void set_value(
const std::shared_ptr<Integer> &value);
3274 void set_name(std::shared_ptr<VarName> &&name);
3279 void set_name(
const std::shared_ptr<VarName> &name);
3322 void set_parent_in_children();
3329 #endif // !NMODL_AST_REACT_VAR_NAME_HPP 3330 #ifndef NMODL_AST_READ_ION_VAR_HPP 3331 #define NMODL_AST_READ_ION_VAR_HPP 3359 explicit ReadIonVar(
const std::shared_ptr<Name> &name);
3413 return "ReadIonVar";
3420 return std::static_pointer_cast<
ReadIonVar>(shared_from_this());
3427 return std::static_pointer_cast<
const ReadIonVar>(shared_from_this());
3458 const std::shared_ptr<Name> &
get_name() const noexcept {
return name; }
3469 token = std::make_shared<ModToken>(tok);
3475 void set_name(std::shared_ptr<Name> &&name);
3480 void set_name(
const std::shared_ptr<Name> &name);
3523 void set_parent_in_children();
3530 #endif // !NMODL_AST_READ_ION_VAR_HPP 3531 #ifndef NMODL_AST_WRITE_ION_VAR_HPP 3532 #define NMODL_AST_WRITE_ION_VAR_HPP 3560 explicit WriteIonVar(
const std::shared_ptr<Name> &name);
3614 return "WriteIonVar";
3621 return std::static_pointer_cast<
WriteIonVar>(shared_from_this());
3628 return std::static_pointer_cast<
const WriteIonVar>(shared_from_this());
3659 const std::shared_ptr<Name> &
get_name() const noexcept {
return name; }
3670 token = std::make_shared<ModToken>(tok);
3676 void set_name(std::shared_ptr<Name> &&name);
3681 void set_name(
const std::shared_ptr<Name> &name);
3724 void set_parent_in_children();
3731 #endif // !NMODL_AST_WRITE_ION_VAR_HPP 3732 #ifndef NMODL_AST_NONSPECIFIC_CUR_VAR_HPP 3733 #define NMODL_AST_NONSPECIFIC_CUR_VAR_HPP 3817 return "NonspecificCurVar";
3832 shared_from_this());
3863 const std::shared_ptr<Name> &
get_name() const noexcept {
return name; }
3874 token = std::make_shared<ModToken>(tok);
3881 void set_name(std::shared_ptr<Name> &&name);
3886 void set_name(
const std::shared_ptr<Name> &name);
3929 void set_parent_in_children();
3936 #endif // !NMODL_AST_NONSPECIFIC_CUR_VAR_HPP 3937 #ifndef NMODL_AST_ELECTRODE_CUR_VAR_HPP 3938 #define NMODL_AST_ELECTRODE_CUR_VAR_HPP 4020 return "ElectrodeCurVar";
4034 return std::static_pointer_cast<
const ElectrodeCurVar>(shared_from_this());
4065 const std::shared_ptr<Name> &
get_name() const noexcept {
return name; }
4076 token = std::make_shared<ModToken>(tok);
4083 void set_name(std::shared_ptr<Name> &&name);
4088 void set_name(
const std::shared_ptr<Name> &name);
4131 void set_parent_in_children();
4138 #endif // !NMODL_AST_ELECTRODE_CUR_VAR_HPP 4139 #ifndef NMODL_AST_SECTION_VAR_HPP 4140 #define NMODL_AST_SECTION_VAR_HPP 4168 explicit SectionVar(
const std::shared_ptr<Name> &name);
4222 return "SectionVar";
4229 return std::static_pointer_cast<
SectionVar>(shared_from_this());
4236 return std::static_pointer_cast<
const SectionVar>(shared_from_this());
4267 const std::shared_ptr<Name> &
get_name() const noexcept {
return name; }
4278 token = std::make_shared<ModToken>(tok);
4284 void set_name(std::shared_ptr<Name> &&name);
4289 void set_name(
const std::shared_ptr<Name> &name);
4332 void set_parent_in_children();
4339 #endif // !NMODL_AST_SECTION_VAR_HPP 4340 #ifndef NMODL_AST_RANGE_VAR_HPP 4341 #define NMODL_AST_RANGE_VAR_HPP 4369 explicit RangeVar(
const std::shared_ptr<Name> &name);
4430 return std::static_pointer_cast<
RangeVar>(shared_from_this());
4437 return std::static_pointer_cast<
const RangeVar>(shared_from_this());
4468 const std::shared_ptr<Name> &
get_name() const noexcept {
return name; }
4479 token = std::make_shared<ModToken>(tok);
4485 void set_name(std::shared_ptr<Name> &&name);
4490 void set_name(
const std::shared_ptr<Name> &name);
4533 void set_parent_in_children();
4540 #endif // !NMODL_AST_RANGE_VAR_HPP 4541 #ifndef NMODL_AST_GLOBAL_VAR_HPP 4542 #define NMODL_AST_GLOBAL_VAR_HPP 4570 explicit GlobalVar(
const std::shared_ptr<Name> &name);
4631 return std::static_pointer_cast<
GlobalVar>(shared_from_this());
4638 return std::static_pointer_cast<
const GlobalVar>(shared_from_this());
4669 const std::shared_ptr<Name> &
get_name() const noexcept {
return name; }
4680 token = std::make_shared<ModToken>(tok);
4686 void set_name(std::shared_ptr<Name> &&name);
4691 void set_name(
const std::shared_ptr<Name> &name);
4734 void set_parent_in_children();
4741 #endif // !NMODL_AST_GLOBAL_VAR_HPP 4742 #ifndef NMODL_AST_POINTER_VAR_HPP 4743 #define NMODL_AST_POINTER_VAR_HPP 4771 explicit PointerVar(
const std::shared_ptr<Name> &name);
4825 return "PointerVar";
4832 return std::static_pointer_cast<
PointerVar>(shared_from_this());
4839 return std::static_pointer_cast<
const PointerVar>(shared_from_this());
4870 const std::shared_ptr<Name> &
get_name() const noexcept {
return name; }
4881 token = std::make_shared<ModToken>(tok);
4887 void set_name(std::shared_ptr<Name> &&name);
4892 void set_name(
const std::shared_ptr<Name> &name);
4935 void set_parent_in_children();
4942 #endif // !NMODL_AST_POINTER_VAR_HPP 4943 #ifndef NMODL_AST_BBCORE_POINTER_VAR_HPP 4944 #define NMODL_AST_BBCORE_POINTER_VAR_HPP 5029 return "BbcorePointerVar";
5043 return std::static_pointer_cast<
const BbcorePointerVar>(shared_from_this());
5074 const std::shared_ptr<Name> &
get_name() const noexcept {
return name; }
5085 token = std::make_shared<ModToken>(tok);
5092 void set_name(std::shared_ptr<Name> &&name);
5097 void set_name(
const std::shared_ptr<Name> &name);
5140 void set_parent_in_children();
5147 #endif // !NMODL_AST_BBCORE_POINTER_VAR_HPP 5148 #ifndef NMODL_AST_EXTERN_VAR_HPP 5149 #define NMODL_AST_EXTERN_VAR_HPP 5177 explicit ExternVar(
const std::shared_ptr<Name> &name);
5238 return std::static_pointer_cast<
ExternVar>(shared_from_this());
5245 return std::static_pointer_cast<
const ExternVar>(shared_from_this());
5276 const std::shared_ptr<Name> &
get_name() const noexcept {
return name; }
5287 token = std::make_shared<ModToken>(tok);
5293 void set_name(std::shared_ptr<Name> &&name);
5298 void set_name(
const std::shared_ptr<Name> &name);
5341 void set_parent_in_children();
5348 #endif // !NMODL_AST_EXTERN_VAR_HPP 5349 #ifndef NMODL_AST_THREADSAFE_VAR_HPP 5350 #define NMODL_AST_THREADSAFE_VAR_HPP 5432 return "ThreadsafeVar";
5439 return std::static_pointer_cast<
ThreadsafeVar>(shared_from_this());
5446 return std::static_pointer_cast<
const ThreadsafeVar>(shared_from_this());
5477 const std::shared_ptr<Name> &
get_name() const noexcept {
return name; }
5488 token = std::make_shared<ModToken>(tok);
5495 void set_name(std::shared_ptr<Name> &&name);
5500 void set_name(
const std::shared_ptr<Name> &name);
5543 void set_parent_in_children();
5550 #endif // !NMODL_AST_THREADSAFE_VAR_HPP 5551 #ifndef NMODL_AST_PARAM_BLOCK_HPP 5552 #define NMODL_AST_PARAM_BLOCK_HPP 5649 return "ParamBlock";
5669 return std::static_pointer_cast<
ParamBlock>(shared_from_this());
5676 return std::static_pointer_cast<
const ParamBlock>(shared_from_this());
5720 token = std::make_shared<ModToken>(tok);
5788 void set_parent_in_children();
5795 #endif // !NMODL_AST_PARAM_BLOCK_HPP 5796 #ifndef NMODL_AST_STEP_BLOCK_HPP 5797 #define NMODL_AST_STEP_BLOCK_HPP 5910 return std::static_pointer_cast<
StepBlock>(shared_from_this());
5917 return std::static_pointer_cast<
const StepBlock>(shared_from_this());
5959 token = std::make_shared<ModToken>(tok);
6027 void set_parent_in_children();
6034 #endif // !NMODL_AST_STEP_BLOCK_HPP 6035 #ifndef NMODL_AST_INDEPENDENT_BLOCK_HPP 6036 #define NMODL_AST_INDEPENDENT_BLOCK_HPP 6128 return "IndependentBlock";
6143 return "INDEPENDENT ";
6157 return std::static_pointer_cast<
const IndependentBlock>(shared_from_this());
6201 token = std::make_shared<ModToken>(tok);
6269 void set_parent_in_children();
6276 #endif // !NMODL_AST_INDEPENDENT_BLOCK_HPP 6277 #ifndef NMODL_AST_ASSIGNED_BLOCK_HPP 6278 #define NMODL_AST_ASSIGNED_BLOCK_HPP 6376 return "AssignedBlock";
6396 return std::static_pointer_cast<
AssignedBlock>(shared_from_this());
6403 return std::static_pointer_cast<
const AssignedBlock>(shared_from_this());
6447 token = std::make_shared<ModToken>(tok);
6515 void set_parent_in_children();
6522 #endif // !NMODL_AST_ASSIGNED_BLOCK_HPP 6523 #ifndef NMODL_AST_STATE_BLOCK_HPP 6524 #define NMODL_AST_STATE_BLOCK_HPP 6620 return "StateBlock";
6640 return std::static_pointer_cast<
StateBlock>(shared_from_this());
6647 return std::static_pointer_cast<
const StateBlock>(shared_from_this());
6691 token = std::make_shared<ModToken>(tok);
6759 void set_parent_in_children();
6766 #endif // !NMODL_AST_STATE_BLOCK_HPP 6767 #ifndef NMODL_AST_PLOT_BLOCK_HPP 6768 #define NMODL_AST_PLOT_BLOCK_HPP 6795 std::shared_ptr<PlotDeclaration>
plot;
6806 explicit PlotBlock(
const std::shared_ptr<PlotDeclaration> &plot);
6867 return std::static_pointer_cast<
PlotBlock>(shared_from_this());
6874 return std::static_pointer_cast<
const PlotBlock>(shared_from_this());
6905 const std::shared_ptr<PlotDeclaration> &
get_plot() const noexcept {
6918 token = std::make_shared<ModToken>(tok);
6937 void set_plot(std::shared_ptr<PlotDeclaration> &&plot);
6942 void set_plot(
const std::shared_ptr<PlotDeclaration> &plot);
6985 void set_parent_in_children();
6992 #endif // !NMODL_AST_PLOT_BLOCK_HPP 6993 #ifndef NMODL_AST_INITIAL_BLOCK_HPP 6994 #define NMODL_AST_INITIAL_BLOCK_HPP 7035 explicit InitialBlock(
const std::shared_ptr<StatementBlock> &statement_block);
7089 return "InitialBlock";
7109 return std::static_pointer_cast<
InitialBlock>(shared_from_this());
7116 return std::static_pointer_cast<
const InitialBlock>(shared_from_this());
7149 return statement_block;
7161 token = std::make_shared<ModToken>(tok);
7181 void set_statement_block(std::shared_ptr<StatementBlock> &&statement_block);
7187 set_statement_block(
const std::shared_ptr<StatementBlock> &statement_block);
7230 void set_parent_in_children();
7237 #endif // !NMODL_AST_INITIAL_BLOCK_HPP 7238 #ifndef NMODL_AST_CONSTRUCTOR_BLOCK_HPP 7239 #define NMODL_AST_CONSTRUCTOR_BLOCK_HPP 7283 const std::shared_ptr<StatementBlock> &statement_block);
7339 return "ConstructorBlock";
7354 return "CONSTRUCTOR ";
7368 return std::static_pointer_cast<
const ConstructorBlock>(shared_from_this());
7401 return statement_block;
7413 token = std::make_shared<ModToken>(tok);
7433 void set_statement_block(std::shared_ptr<StatementBlock> &&statement_block);
7439 set_statement_block(
const std::shared_ptr<StatementBlock> &statement_block);
7482 void set_parent_in_children();
7489 #endif // !NMODL_AST_CONSTRUCTOR_BLOCK_HPP 7490 #ifndef NMODL_AST_DESTRUCTOR_BLOCK_HPP 7491 #define NMODL_AST_DESTRUCTOR_BLOCK_HPP 7537 const std::shared_ptr<StatementBlock> &statement_block);
7591 return "DestructorBlock";
7618 return std::static_pointer_cast<
const DestructorBlock>(shared_from_this());
7651 return statement_block;
7663 token = std::make_shared<ModToken>(tok);
7683 void set_statement_block(std::shared_ptr<StatementBlock> &&statement_block);
7689 set_statement_block(
const std::shared_ptr<StatementBlock> &statement_block);
7732 void set_parent_in_children();
7739 #endif // !NMODL_AST_DESTRUCTOR_BLOCK_HPP 7740 #ifndef NMODL_AST_STATEMENT_BLOCK_HPP 7741 #define NMODL_AST_STATEMENT_BLOCK_HPP 7838 return "StatementBlock";
7845 return std::static_pointer_cast<
StatementBlock>(shared_from_this());
7852 return std::static_pointer_cast<
const StatementBlock>(shared_from_this());
7884 statements.emplace_back(n);
7894 statements.emplace_back(n);
7896 n->set_parent(
this);
7902 StatementVector::const_iterator
7905 return statements.erase(first_it);
7910 StatementVector::const_iterator
7912 StatementVector::const_iterator last) {
7915 return statements.erase(first_it, last_it);
7923 auto first = statements.begin();
7924 auto last = statements.end();
7925 auto result = first;
7927 while (first != last) {
7930 if (to_be_erased.erase(first->get()) == 0) {
7931 reset_statement(result, *first);
7937 size_t out = last - result;
7938 erase_statement(result, last);
7946 StatementVector::const_iterator
7948 const std::shared_ptr<Statement> &n) {
7949 n->set_parent(
this);
7951 return statements.insert(pos_it, n);
7956 template <
class NodeType,
class InputIterator>
7958 InputIterator first, InputIterator last) {
7960 for (
auto it = first; it != last; ++it) {
7963 n->set_parent(
this);
7968 statements.insert(pos_it, first_it, last_it);
7978 statements[position - statements.begin()].reset(n);
7985 std::shared_ptr<Statement> n) {
7987 n->set_parent(
this);
7989 statements[position - statements.begin()] = n;
8006 token = std::make_shared<ModToken>(tok);
8074 void set_parent_in_children();
8081 #endif // !NMODL_AST_STATEMENT_BLOCK_HPP 8082 #ifndef NMODL_AST_DERIVATIVE_BLOCK_HPP 8083 #define NMODL_AST_DERIVATIVE_BLOCK_HPP 8127 const std::shared_ptr<Name> &name,
8128 const std::shared_ptr<StatementBlock> &statement_block);
8182 return "DerivativeBlock";
8209 return std::static_pointer_cast<
const DerivativeBlock>(shared_from_this());
8253 const std::shared_ptr<Name> &
get_name() const noexcept {
return name; }
8260 return statement_block;
8272 token = std::make_shared<ModToken>(tok);
8292 void set_name(std::shared_ptr<Name> &&name);
8297 void set_name(
const std::shared_ptr<Name> &name);
8303 void set_statement_block(std::shared_ptr<StatementBlock> &&statement_block);
8309 set_statement_block(
const std::shared_ptr<StatementBlock> &statement_block);
8352 void set_parent_in_children();
8359 #endif // !NMODL_AST_DERIVATIVE_BLOCK_HPP 8360 #ifndef NMODL_AST_LINEAR_BLOCK_HPP 8361 #define NMODL_AST_LINEAR_BLOCK_HPP 8410 explicit LinearBlock(
const std::shared_ptr<Name> &name,
8412 const std::shared_ptr<StatementBlock> &statement_block);
8466 return "LinearBlock";
8486 return std::static_pointer_cast<
LinearBlock>(shared_from_this());
8493 return std::static_pointer_cast<
const LinearBlock>(shared_from_this());
8537 const std::shared_ptr<Name> &
get_name() const noexcept {
return name; }
8549 return statement_block;
8561 token = std::make_shared<ModToken>(tok);
8580 void set_name(std::shared_ptr<Name> &&name);
8585 void set_name(
const std::shared_ptr<Name> &name);
8596 void set_solvefor(
const NameVector &solvefor);
8602 void set_statement_block(std::shared_ptr<StatementBlock> &&statement_block);
8608 set_statement_block(
const std::shared_ptr<StatementBlock> &statement_block);
8651 void set_parent_in_children();
8658 #endif // !NMODL_AST_LINEAR_BLOCK_HPP 8659 #ifndef NMODL_AST_NON_LINEAR_BLOCK_HPP 8660 #define NMODL_AST_NON_LINEAR_BLOCK_HPP 8707 const std::shared_ptr<Name> &name,
const NameVector &solvefor,
8708 const std::shared_ptr<StatementBlock> &statement_block);
8762 return "NonLinearBlock";
8782 return std::static_pointer_cast<
NonLinearBlock>(shared_from_this());
8789 return std::static_pointer_cast<
const NonLinearBlock>(shared_from_this());
8833 const std::shared_ptr<Name> &
get_name() const noexcept {
return name; }
8845 return statement_block;
8857 token = std::make_shared<ModToken>(tok);
8877 void set_name(std::shared_ptr<Name> &&name);
8882 void set_name(
const std::shared_ptr<Name> &name);
8893 void set_solvefor(
const NameVector &solvefor);
8899 void set_statement_block(std::shared_ptr<StatementBlock> &&statement_block);
8905 set_statement_block(
const std::shared_ptr<StatementBlock> &statement_block);
8948 void set_parent_in_children();
8955 #endif // !NMODL_AST_NON_LINEAR_BLOCK_HPP 8956 #ifndef NMODL_AST_DISCRETE_BLOCK_HPP 8957 #define NMODL_AST_DISCRETE_BLOCK_HPP 8990 const std::shared_ptr<Name> &name,
8991 const std::shared_ptr<StatementBlock> &statement_block);
9045 return "DiscreteBlock";
9065 return std::static_pointer_cast<
DiscreteBlock>(shared_from_this());
9072 return std::static_pointer_cast<
const DiscreteBlock>(shared_from_this());
9116 const std::shared_ptr<Name> &
get_name() const noexcept {
return name; }
9123 return statement_block;
9135 token = std::make_shared<ModToken>(tok);
9155 void set_name(std::shared_ptr<Name> &&name);
9160 void set_name(
const std::shared_ptr<Name> &name);
9166 void set_statement_block(std::shared_ptr<StatementBlock> &&statement_block);
9172 set_statement_block(
const std::shared_ptr<StatementBlock> &statement_block);
9215 void set_parent_in_children();
9222 #endif // !NMODL_AST_DISCRETE_BLOCK_HPP 9223 #ifndef NMODL_AST_PARTIAL_BLOCK_HPP 9224 #define NMODL_AST_PARTIAL_BLOCK_HPP 9256 explicit PartialBlock(
const std::shared_ptr<Name> &name,
9257 const std::shared_ptr<StatementBlock> &statement_block);
9311 return "PartialBlock";
9331 return std::static_pointer_cast<
PartialBlock>(shared_from_this());
9338 return std::static_pointer_cast<
const PartialBlock>(shared_from_this());
9382 const std::shared_ptr<Name> &
get_name() const noexcept {
return name; }
9389 return statement_block;
9401 token = std::make_shared<ModToken>(tok);
9420 void set_name(std::shared_ptr<Name> &&name);
9425 void set_name(
const std::shared_ptr<Name> &name);
9431 void set_statement_block(std::shared_ptr<StatementBlock> &&statement_block);
9437 set_statement_block(
const std::shared_ptr<StatementBlock> &statement_block);
9480 void set_parent_in_children();
9487 #endif // !NMODL_AST_PARTIAL_BLOCK_HPP 9488 #ifndef NMODL_AST_FUNCTION_TABLE_BLOCK_HPP 9489 #define NMODL_AST_FUNCTION_TABLE_BLOCK_HPP 9526 const std::shared_ptr<Unit> &unit);
9582 return "FunctionTableBlock";
9597 return "FUNCTION_TABLE ";
9612 shared_from_this());
9656 const std::shared_ptr<Name> &
get_name() const noexcept {
return name; }
9668 const std::shared_ptr<Unit> &
get_unit() const noexcept {
return unit; }
9679 token = std::make_shared<ModToken>(tok);
9699 void set_name(std::shared_ptr<Name> &&name);
9704 void set_name(
const std::shared_ptr<Name> &name);
9721 void set_unit(std::shared_ptr<Unit> &&unit);
9726 void set_unit(
const std::shared_ptr<Unit> &unit);
9769 void set_parent_in_children();
9776 #endif // !NMODL_AST_FUNCTION_TABLE_BLOCK_HPP 9777 #ifndef NMODL_AST_FUNCTION_BLOCK_HPP 9778 #define NMODL_AST_FUNCTION_BLOCK_HPP 9816 const std::shared_ptr<Name> &name,
const ArgumentVector ¶meters,
9817 const std::shared_ptr<Unit> &unit,
9818 const std::shared_ptr<StatementBlock> &statement_block);
9872 return "FunctionBlock";
9892 return std::static_pointer_cast<
FunctionBlock>(shared_from_this());
9899 return std::static_pointer_cast<
const FunctionBlock>(shared_from_this());
9943 const std::shared_ptr<Name> &
get_name() const noexcept {
return name; }
9955 const std::shared_ptr<Unit> &
get_unit() const noexcept {
return unit; }
9962 return statement_block;
9974 token = std::make_shared<ModToken>(tok);
9994 void set_name(std::shared_ptr<Name> &&name);
9999 void set_name(
const std::shared_ptr<Name> &name);
10016 void set_unit(std::shared_ptr<Unit> &&unit);
10021 void set_unit(
const std::shared_ptr<Unit> &unit);
10027 void set_statement_block(std::shared_ptr<StatementBlock> &&statement_block);
10033 set_statement_block(
const std::shared_ptr<StatementBlock> &statement_block);
10076 void set_parent_in_children();
10083 #endif // !NMODL_AST_FUNCTION_BLOCK_HPP 10084 #ifndef NMODL_AST_PROCEDURE_BLOCK_HPP 10085 #define NMODL_AST_PROCEDURE_BLOCK_HPP 10123 const std::shared_ptr<Name> &name,
const ArgumentVector ¶meters,
10124 const std::shared_ptr<Unit> &unit,
10125 const std::shared_ptr<StatementBlock> &statement_block);
10179 return "ProcedureBlock";
10199 return std::static_pointer_cast<
ProcedureBlock>(shared_from_this());
10206 return std::static_pointer_cast<
const ProcedureBlock>(shared_from_this());
10250 const std::shared_ptr<Name> &
get_name() const noexcept {
return name; }
10262 const std::shared_ptr<Unit> &
get_unit() const noexcept {
return unit; }
10268 noexcept
override {
10269 return statement_block;
10281 token = std::make_shared<ModToken>(tok);
10294 symtab = newsymtab;
10301 void set_name(std::shared_ptr<Name> &&name);
10306 void set_name(
const std::shared_ptr<Name> &name);
10323 void set_unit(std::shared_ptr<Unit> &&unit);
10328 void set_unit(
const std::shared_ptr<Unit> &unit);
10334 void set_statement_block(std::shared_ptr<StatementBlock> &&statement_block);
10340 set_statement_block(
const std::shared_ptr<StatementBlock> &statement_block);
10383 void set_parent_in_children();
10390 #endif // !NMODL_AST_PROCEDURE_BLOCK_HPP 10391 #ifndef NMODL_AST_NET_RECEIVE_BLOCK_HPP 10392 #define NMODL_AST_NET_RECEIVE_BLOCK_HPP 10427 const std::shared_ptr<StatementBlock> &statement_block);
10481 return "NetReceiveBlock";
10496 return "NET_RECEIVE ";
10503 return std::static_pointer_cast<
NetReceiveBlock>(shared_from_this());
10510 return std::static_pointer_cast<
const NetReceiveBlock>(shared_from_this());
10549 noexcept
override {
10550 return statement_block;
10562 token = std::make_shared<ModToken>(tok);
10575 symtab = newsymtab;
10593 void set_statement_block(std::shared_ptr<StatementBlock> &&statement_block);
10599 set_statement_block(
const std::shared_ptr<StatementBlock> &statement_block);
10642 void set_parent_in_children();
10649 #endif // !NMODL_AST_NET_RECEIVE_BLOCK_HPP 10650 #ifndef NMODL_AST_SOLVE_BLOCK_HPP 10651 #define NMODL_AST_SOLVE_BLOCK_HPP 10688 explicit SolveBlock(
const std::shared_ptr<Name> &block_name,
10689 const std::shared_ptr<Name> &method,
10690 const std::shared_ptr<Name> &steadystate,
10691 const std::shared_ptr<StatementBlock> &ifsolerr);
10745 return "SolveBlock";
10765 return std::static_pointer_cast<
SolveBlock>(shared_from_this());
10772 return std::static_pointer_cast<
const SolveBlock>(shared_from_this());
10810 const std::shared_ptr<Name> &
get_method() const noexcept {
return method; }
10816 return steadystate;
10835 token = std::make_shared<ModToken>(tok);
10848 symtab = newsymtab;
10855 void set_block_name(std::shared_ptr<Name> &&block_name);
10860 void set_block_name(
const std::shared_ptr<Name> &block_name);
10865 void set_method(std::shared_ptr<Name> &&method);
10870 void set_method(
const std::shared_ptr<Name> &method);
10876 void set_steadystate(std::shared_ptr<Name> &&steadystate);
10881 void set_steadystate(
const std::shared_ptr<Name> &steadystate);
10887 void set_ifsolerr(std::shared_ptr<StatementBlock> &&ifsolerr);
10892 void set_ifsolerr(
const std::shared_ptr<StatementBlock> &ifsolerr);
10935 void set_parent_in_children();
10942 #endif // !NMODL_AST_SOLVE_BLOCK_HPP 10943 #ifndef NMODL_AST_BREAKPOINT_BLOCK_HPP 10944 #define NMODL_AST_BREAKPOINT_BLOCK_HPP 10990 const std::shared_ptr<StatementBlock> &statement_block);
11044 return "BreakpointBlock";
11064 return std::static_pointer_cast<
BreakpointBlock>(shared_from_this());
11071 return std::static_pointer_cast<
const BreakpointBlock>(shared_from_this());
11103 noexcept
override {
11104 return statement_block;
11116 token = std::make_shared<ModToken>(tok);
11129 symtab = newsymtab;
11136 void set_statement_block(std::shared_ptr<StatementBlock> &&statement_block);
11142 set_statement_block(
const std::shared_ptr<StatementBlock> &statement_block);
11185 void set_parent_in_children();
11192 #endif // !NMODL_AST_BREAKPOINT_BLOCK_HPP 11193 #ifndef NMODL_AST_TERMINAL_BLOCK_HPP 11194 #define NMODL_AST_TERMINAL_BLOCK_HPP 11225 const std::shared_ptr<StatementBlock> &statement_block);
11279 return "TerminalBlock";
11299 return std::static_pointer_cast<
TerminalBlock>(shared_from_this());
11306 return std::static_pointer_cast<
const TerminalBlock>(shared_from_this());
11338 noexcept
override {
11339 return statement_block;
11351 token = std::make_shared<ModToken>(tok);
11364 symtab = newsymtab;
11371 void set_statement_block(std::shared_ptr<StatementBlock> &&statement_block);
11377 set_statement_block(
const std::shared_ptr<StatementBlock> &statement_block);
11420 void set_parent_in_children();
11427 #endif // !NMODL_AST_TERMINAL_BLOCK_HPP 11428 #ifndef NMODL_AST_BEFORE_BLOCK_HPP 11429 #define NMODL_AST_BEFORE_BLOCK_HPP 11459 explicit BeforeBlock(
const std::shared_ptr<BABlock> &bablock);
11513 return "BeforeBlock";
11533 return std::static_pointer_cast<
BeforeBlock>(shared_from_this());
11540 return std::static_pointer_cast<
const BeforeBlock>(shared_from_this());
11584 token = std::make_shared<ModToken>(tok);
11597 symtab = newsymtab;
11604 void set_bablock(std::shared_ptr<BABlock> &&bablock);
11609 void set_bablock(
const std::shared_ptr<BABlock> &bablock);
11652 void set_parent_in_children();
11659 #endif // !NMODL_AST_BEFORE_BLOCK_HPP 11660 #ifndef NMODL_AST_AFTER_BLOCK_HPP 11661 #define NMODL_AST_AFTER_BLOCK_HPP 11690 class AfterBlock :
public Block {
11693 std::shared_ptr<BABlock> bablock;
11695 std::shared_ptr<ModToken> token;
11697 symtab::SymbolTable *symtab =
nullptr;
11703 explicit AfterBlock(BABlock *bablock);
11704 explicit AfterBlock(
const std::shared_ptr<BABlock> &bablock);
11705 AfterBlock(
const AfterBlock &obj);
11707 virtual ~AfterBlock() =
default;
11758 return "AfterBlock";
11778 return std::static_pointer_cast<
AfterBlock>(shared_from_this());
11785 return std::static_pointer_cast<
const AfterBlock>(shared_from_this());
11829 token = std::make_shared<ModToken>(tok);
11842 symtab = newsymtab;
11849 void set_bablock(std::shared_ptr<BABlock> &&bablock);
11854 void set_bablock(
const std::shared_ptr<BABlock> &bablock);
11897 void set_parent_in_children();
11904 #endif // !NMODL_AST_AFTER_BLOCK_HPP 11905 #ifndef NMODL_AST_BA_BLOCK_HPP 11906 #define NMODL_AST_BA_BLOCK_HPP 11940 explicit BABlock(
const std::shared_ptr<BABlockType> &type,
11941 const std::shared_ptr<StatementBlock> &statement_block);
11944 virtual ~
BABlock() =
default;
12000 return std::static_pointer_cast<
BABlock>(shared_from_this());
12007 return std::static_pointer_cast<
const BABlock>(shared_from_this());
12038 const std::shared_ptr<BABlockType> &
get_type() const noexcept {
return type; }
12044 noexcept
override {
12045 return statement_block;
12057 token = std::make_shared<ModToken>(tok);
12070 symtab = newsymtab;
12076 void set_type(std::shared_ptr<BABlockType> &&type);
12081 void set_type(
const std::shared_ptr<BABlockType> &type);
12087 void set_statement_block(std::shared_ptr<StatementBlock> &&statement_block);
12093 set_statement_block(
const std::shared_ptr<StatementBlock> &statement_block);
12136 void set_parent_in_children();
12143 #endif // !NMODL_AST_BA_BLOCK_HPP 12144 #ifndef NMODL_AST_FOR_NETCON_HPP 12145 #define NMODL_AST_FOR_NETCON_HPP 12179 const std::shared_ptr<StatementBlock> &statement_block);
12233 return "ForNetcon";
12248 return "FOR_NETCONS ";
12255 return std::static_pointer_cast<
ForNetcon>(shared_from_this());
12262 return std::static_pointer_cast<
const ForNetcon>(shared_from_this());
12301 noexcept
override {
12302 return statement_block;
12314 token = std::make_shared<ModToken>(tok);
12327 symtab = newsymtab;
12345 void set_statement_block(std::shared_ptr<StatementBlock> &&statement_block);
12351 set_statement_block(
const std::shared_ptr<StatementBlock> &statement_block);
12394 void set_parent_in_children();
12401 #endif // !NMODL_AST_FOR_NETCON_HPP 12402 #ifndef NMODL_AST_KINETIC_BLOCK_HPP 12403 #define NMODL_AST_KINETIC_BLOCK_HPP 12438 explicit KineticBlock(
const std::shared_ptr<Name> &name,
12440 const std::shared_ptr<StatementBlock> &statement_block);
12494 return "KineticBlock";
12514 return std::static_pointer_cast<
KineticBlock>(shared_from_this());
12521 return std::static_pointer_cast<
const KineticBlock>(shared_from_this());
12565 const std::shared_ptr<Name> &
get_name() const noexcept {
return name; }
12576 noexcept
override {
12577 return statement_block;
12589 token = std::make_shared<ModToken>(tok);
12602 symtab = newsymtab;
12608 void set_name(std::shared_ptr<Name> &&name);
12613 void set_name(
const std::shared_ptr<Name> &name);
12624 void set_solvefor(
const NameVector &solvefor);
12630 void set_statement_block(std::shared_ptr<StatementBlock> &&statement_block);
12636 set_statement_block(
const std::shared_ptr<StatementBlock> &statement_block);
12679 void set_parent_in_children();
12686 #endif // !NMODL_AST_KINETIC_BLOCK_HPP 12687 #ifndef NMODL_AST_MATCH_BLOCK_HPP 12688 #define NMODL_AST_MATCH_BLOCK_HPP 12771 return "MatchBlock";
12791 return std::static_pointer_cast<
MatchBlock>(shared_from_this());
12798 return std::static_pointer_cast<
const MatchBlock>(shared_from_this());
12840 token = std::make_shared<ModToken>(tok);
12853 symtab = newsymtab;
12907 void set_parent_in_children();
12914 #endif // !NMODL_AST_MATCH_BLOCK_HPP 12915 #ifndef NMODL_AST_UNIT_BLOCK_HPP 12916 #define NMODL_AST_UNIT_BLOCK_HPP 12999 return "UnitBlock";
13019 return std::static_pointer_cast<
UnitBlock>(shared_from_this());
13026 return std::static_pointer_cast<
const UnitBlock>(shared_from_this());
13058 return definitions;
13070 token = std::make_shared<ModToken>(tok);
13083 symtab = newsymtab;
13138 void set_parent_in_children();
13145 #endif // !NMODL_AST_UNIT_BLOCK_HPP 13146 #ifndef NMODL_AST_CONSTANT_BLOCK_HPP 13147 #define NMODL_AST_CONSTANT_BLOCK_HPP 13241 return "ConstantBlock";
13261 return std::static_pointer_cast<
ConstantBlock>(shared_from_this());
13268 return std::static_pointer_cast<
const ConstantBlock>(shared_from_this());
13312 token = std::make_shared<ModToken>(tok);
13325 symtab = newsymtab;
13380 void set_parent_in_children();
13387 #endif // !NMODL_AST_CONSTANT_BLOCK_HPP 13388 #ifndef NMODL_AST_NEURON_BLOCK_HPP 13389 #define NMODL_AST_NEURON_BLOCK_HPP 13434 explicit NeuronBlock(
const std::shared_ptr<StatementBlock> &statement_block);
13488 return "NeuronBlock";
13508 return std::static_pointer_cast<
NeuronBlock>(shared_from_this());
13515 return std::static_pointer_cast<
const NeuronBlock>(shared_from_this());
13547 noexcept
override {
13548 return statement_block;
13560 token = std::make_shared<ModToken>(tok);
13573 symtab = newsymtab;
13580 void set_statement_block(std::shared_ptr<StatementBlock> &&statement_block);
13586 set_statement_block(
const std::shared_ptr<StatementBlock> &statement_block);
13629 void set_parent_in_children();
13636 #endif // !NMODL_AST_NEURON_BLOCK_HPP 13637 #ifndef NMODL_AST_UNIT_HPP 13638 #define NMODL_AST_UNIT_HPP 13666 explicit Unit(
const std::shared_ptr<String> &name);
13669 virtual ~
Unit() =
default;
13677 bool is_unit() const noexcept
override {
return true; }
13725 return std::static_pointer_cast<
Unit>(shared_from_this());
13732 return std::static_pointer_cast<
const Unit>(shared_from_this());
13763 const std::shared_ptr<String> &
get_name() const noexcept {
return name; }
13774 token = std::make_shared<ModToken>(tok);
13780 void set_name(std::shared_ptr<String> &&name);
13785 void set_name(
const std::shared_ptr<String> &name);
13828 void set_parent_in_children();
13835 #endif // !NMODL_AST_UNIT_HPP 13836 #ifndef NMODL_AST_DOUBLE_UNIT_HPP 13837 #define NMODL_AST_DOUBLE_UNIT_HPP 13867 explicit DoubleUnit(
const std::shared_ptr<Double> &value,
13868 const std::shared_ptr<Unit> &unit);
13922 return "DoubleUnit";
13929 return std::static_pointer_cast<
DoubleUnit>(shared_from_this());
13936 return std::static_pointer_cast<
const DoubleUnit>(shared_from_this());
13954 const std::shared_ptr<Double> &
get_value() const noexcept {
return value; }
13959 const std::shared_ptr<Unit> &
get_unit() const noexcept {
return unit; }
13970 token = std::make_shared<ModToken>(tok);
13976 void set_value(std::shared_ptr<Double> &&value);
13981 void set_value(
const std::shared_ptr<Double> &value);
13986 void set_unit(std::shared_ptr<Unit> &&unit);
13991 void set_unit(
const std::shared_ptr<Unit> &unit);
14034 void set_parent_in_children();
14041 #endif // !NMODL_AST_DOUBLE_UNIT_HPP 14042 #ifndef NMODL_AST_LOCAL_VAR_HPP 14043 #define NMODL_AST_LOCAL_VAR_HPP 14071 explicit LocalVar(
const std::shared_ptr<Identifier> &name);
14132 return std::static_pointer_cast<
LocalVar>(shared_from_this());
14139 return std::static_pointer_cast<
const LocalVar>(shared_from_this());
14170 const std::shared_ptr<Identifier> &
get_name() const noexcept {
return name; }
14181 token = std::make_shared<ModToken>(tok);
14187 void set_name(std::shared_ptr<Identifier> &&name);
14192 void set_name(
const std::shared_ptr<Identifier> &name);
14235 void set_parent_in_children();
14242 #endif // !NMODL_AST_LOCAL_VAR_HPP 14243 #ifndef NMODL_AST_LIMITS_HPP 14244 #define NMODL_AST_LIMITS_HPP 14274 explicit Limits(
const std::shared_ptr<Double> &min,
14275 const std::shared_ptr<Double> &max);
14278 virtual ~
Limits() =
default;
14334 return std::static_pointer_cast<
Limits>(shared_from_this());
14341 return std::static_pointer_cast<
const Limits>(shared_from_this());
14359 const std::shared_ptr<Double> &
get_min() const noexcept {
return min; }
14364 const std::shared_ptr<Double> &
get_max() const noexcept {
return max; }
14375 token = std::make_shared<ModToken>(tok);
14381 void set_min(std::shared_ptr<Double> &&min);
14386 void set_min(
const std::shared_ptr<Double> &min);
14391 void set_max(std::shared_ptr<Double> &&max);
14396 void set_max(
const std::shared_ptr<Double> &max);
14439 void set_parent_in_children();
14446 #endif // !NMODL_AST_LIMITS_HPP 14447 #ifndef NMODL_AST_NUMBER_RANGE_HPP 14448 #define NMODL_AST_NUMBER_RANGE_HPP 14478 explicit NumberRange(
const std::shared_ptr<Number> &min,
14479 const std::shared_ptr<Number> &max);
14533 return "NumberRange";
14540 return std::static_pointer_cast<
NumberRange>(shared_from_this());
14547 return std::static_pointer_cast<
const NumberRange>(shared_from_this());
14565 const std::shared_ptr<Number> &
get_min() const noexcept {
return min; }
14570 const std::shared_ptr<Number> &
get_max() const noexcept {
return max; }
14581 token = std::make_shared<ModToken>(tok);
14587 void set_min(std::shared_ptr<Number> &&min);
14592 void set_min(
const std::shared_ptr<Number> &min);
14597 void set_max(std::shared_ptr<Number> &&max);
14602 void set_max(
const std::shared_ptr<Number> &max);
14645 void set_parent_in_children();
14652 #endif // !NMODL_AST_NUMBER_RANGE_HPP 14653 #ifndef NMODL_AST_PLOT_VAR_HPP 14654 #define NMODL_AST_PLOT_VAR_HPP 14684 explicit PlotVar(
const std::shared_ptr<Identifier> &name,
14685 const std::shared_ptr<Integer> &index);
14688 virtual ~
PlotVar() =
default;
14744 return std::static_pointer_cast<
PlotVar>(shared_from_this());
14751 return std::static_pointer_cast<
const PlotVar>(shared_from_this());
14769 const std::shared_ptr<Identifier> &
get_name() const noexcept {
return name; }
14774 const std::shared_ptr<Integer> &
get_index() const noexcept {
return index; }
14785 token = std::make_shared<ModToken>(tok);
14791 void set_name(std::shared_ptr<Identifier> &&name);
14796 void set_name(
const std::shared_ptr<Identifier> &name);
14801 void set_index(std::shared_ptr<Integer> &&index);
14806 void set_index(
const std::shared_ptr<Integer> &index);
14849 void set_parent_in_children();
14856 #endif // !NMODL_AST_PLOT_VAR_HPP 14857 #ifndef NMODL_AST_CONSTANT_VAR_HPP 14858 #define NMODL_AST_CONSTANT_VAR_HPP 14890 explicit ConstantVar(
const std::shared_ptr<Name> &name,
14891 const std::shared_ptr<Number> &value,
14892 const std::shared_ptr<Unit> &unit);
14946 return "ConstantVar";
14953 return std::static_pointer_cast<
ConstantVar>(shared_from_this());
14960 return std::static_pointer_cast<
const ConstantVar>(shared_from_this());
14991 const std::shared_ptr<Name> &
get_name() const noexcept {
return name; }
14996 const std::shared_ptr<Number> &
get_value() const noexcept {
return value; }
15001 const std::shared_ptr<Unit> &
get_unit() const noexcept {
return unit; }
15012 token = std::make_shared<ModToken>(tok);
15018 void set_name(std::shared_ptr<Name> &&name);
15023 void set_name(
const std::shared_ptr<Name> &name);
15028 void set_value(std::shared_ptr<Number> &&value);
15033 void set_value(
const std::shared_ptr<Number> &value);
15038 void set_unit(std::shared_ptr<Unit> &&unit);
15043 void set_unit(
const std::shared_ptr<Unit> &unit);
15086 void set_parent_in_children();
15093 #endif // !NMODL_AST_CONSTANT_VAR_HPP 15094 #ifndef NMODL_AST_BINARY_OPERATOR_HPP 15095 #define NMODL_AST_BINARY_OPERATOR_HPP 15178 return "BinaryOperator";
15185 return std::static_pointer_cast<
BinaryOperator>(shared_from_this());
15192 return std::static_pointer_cast<
const BinaryOperator>(shared_from_this());
15221 token = std::make_shared<ModToken>(tok);
15279 void set_parent_in_children();
15286 #endif // !NMODL_AST_BINARY_OPERATOR_HPP 15287 #ifndef NMODL_AST_UNARY_OPERATOR_HPP 15288 #define NMODL_AST_UNARY_OPERATOR_HPP 15371 return "UnaryOperator";
15378 return std::static_pointer_cast<
UnaryOperator>(shared_from_this());
15385 return std::static_pointer_cast<
const UnaryOperator>(shared_from_this());
15414 token = std::make_shared<ModToken>(tok);
15420 void set_value(
UnaryOp value);
15472 void set_parent_in_children();
15479 #endif // !NMODL_AST_UNARY_OPERATOR_HPP 15480 #ifndef NMODL_AST_REACTION_OPERATOR_HPP 15481 #define NMODL_AST_REACTION_OPERATOR_HPP 15566 return "ReactionOperator";
15580 return std::static_pointer_cast<
const ReactionOperator>(shared_from_this());
15609 token = std::make_shared<ModToken>(tok);
15667 void set_parent_in_children();
15674 #endif // !NMODL_AST_REACTION_OPERATOR_HPP 15675 #ifndef NMODL_AST_PAREN_EXPRESSION_HPP 15676 #define NMODL_AST_PAREN_EXPRESSION_HPP 15704 explicit ParenExpression(
const std::shared_ptr<Expression> &expression);
15758 return "ParenExpression";
15765 return std::static_pointer_cast<
ParenExpression>(shared_from_this());
15772 return std::static_pointer_cast<
const ParenExpression>(shared_from_this());
15803 token = std::make_shared<ModToken>(tok);
15810 void set_expression(std::shared_ptr<Expression> &&expression);
15815 void set_expression(
const std::shared_ptr<Expression> &expression);
15858 void set_parent_in_children();
15865 #endif // !NMODL_AST_PAREN_EXPRESSION_HPP 15866 #ifndef NMODL_AST_BINARY_EXPRESSION_HPP 15867 #define NMODL_AST_BINARY_EXPRESSION_HPP 15916 const std::shared_ptr<Expression> &rhs);
15972 return "BinaryExpression";
15986 return std::static_pointer_cast<
const BinaryExpression>(shared_from_this());
16004 const std::shared_ptr<Expression> &
get_lhs() const noexcept {
return lhs; }
16014 const std::shared_ptr<Expression> &
get_rhs() const noexcept {
return rhs; }
16025 token = std::make_shared<ModToken>(tok);
16032 void set_lhs(std::shared_ptr<Expression> &&lhs);
16037 void set_lhs(
const std::shared_ptr<Expression> &lhs);
16054 void set_rhs(std::shared_ptr<Expression> &&rhs);
16059 void set_rhs(
const std::shared_ptr<Expression> &rhs);
16102 void set_parent_in_children();
16109 #endif // !NMODL_AST_BINARY_EXPRESSION_HPP 16110 #ifndef NMODL_AST_DIFF_EQ_EXPRESSION_HPP 16111 #define NMODL_AST_DIFF_EQ_EXPRESSION_HPP 16140 const std::shared_ptr<BinaryExpression> &expression);
16196 return "DiffEqExpression";
16210 return std::static_pointer_cast<
const DiffEqExpression>(shared_from_this());
16241 token = std::make_shared<ModToken>(tok);
16248 void set_expression(std::shared_ptr<BinaryExpression> &&expression);
16253 void set_expression(
const std::shared_ptr<BinaryExpression> &expression);
16296 void set_parent_in_children();
16303 #endif // !NMODL_AST_DIFF_EQ_EXPRESSION_HPP 16304 #ifndef NMODL_AST_UNARY_EXPRESSION_HPP 16305 #define NMODL_AST_UNARY_EXPRESSION_HPP 16336 const std::shared_ptr<Expression> &expression);
16390 return "UnaryExpression";
16397 return std::static_pointer_cast<
UnaryExpression>(shared_from_this());
16404 return std::static_pointer_cast<
const UnaryExpression>(shared_from_this());
16440 token = std::make_shared<ModToken>(tok);
16458 void set_expression(std::shared_ptr<Expression> &&expression);
16463 void set_expression(
const std::shared_ptr<Expression> &expression);
16506 void set_parent_in_children();
16513 #endif // !NMODL_AST_UNARY_EXPRESSION_HPP 16514 #ifndef NMODL_AST_NON_LIN_EQUATION_HPP 16515 #define NMODL_AST_NON_LIN_EQUATION_HPP 16546 const std::shared_ptr<Expression> &rhs);
16600 return "NonLinEquation";
16620 return std::static_pointer_cast<
NonLinEquation>(shared_from_this());
16627 return std::static_pointer_cast<
const NonLinEquation>(shared_from_this());
16645 const std::shared_ptr<Expression> &
get_lhs() const noexcept {
return lhs; }
16650 const std::shared_ptr<Expression> &
get_rhs() const noexcept {
return rhs; }
16661 token = std::make_shared<ModToken>(tok);
16668 void set_lhs(std::shared_ptr<Expression> &&lhs);
16673 void set_lhs(
const std::shared_ptr<Expression> &lhs);
16679 void set_rhs(std::shared_ptr<Expression> &&rhs);
16684 void set_rhs(
const std::shared_ptr<Expression> &rhs);
16727 void set_parent_in_children();
16734 #endif // !NMODL_AST_NON_LIN_EQUATION_HPP 16735 #ifndef NMODL_AST_LIN_EQUATION_HPP 16736 #define NMODL_AST_LIN_EQUATION_HPP 16766 explicit LinEquation(
const std::shared_ptr<Expression> &left_linxpression,
16767 const std::shared_ptr<Expression> &linxpression);
16821 return "LinEquation";
16841 return std::static_pointer_cast<
LinEquation>(shared_from_this());
16848 return std::static_pointer_cast<
const LinEquation>(shared_from_this());
16867 return left_linxpression;
16874 return linxpression;
16886 token = std::make_shared<ModToken>(tok);
16893 void set_left_linxpression(std::shared_ptr<Expression> &&left_linxpression);
16899 set_left_linxpression(
const std::shared_ptr<Expression> &left_linxpression);
16905 void set_linxpression(std::shared_ptr<Expression> &&linxpression);
16910 void set_linxpression(
const std::shared_ptr<Expression> &linxpression);
16953 void set_parent_in_children();
16960 #endif // !NMODL_AST_LIN_EQUATION_HPP 16961 #ifndef NMODL_AST_FUNCTION_CALL_HPP 16962 #define NMODL_AST_FUNCTION_CALL_HPP 16992 explicit FunctionCall(
const std::shared_ptr<Name> &name,
17047 return "FunctionCall";
17054 return std::static_pointer_cast<
FunctionCall>(shared_from_this());
17061 return std::static_pointer_cast<
const FunctionCall>(shared_from_this());
17092 const std::shared_ptr<Name> &
get_name() const noexcept {
return name; }
17108 token = std::make_shared<ModToken>(tok);
17114 void set_name(std::shared_ptr<Name> &&name);
17119 void set_name(
const std::shared_ptr<Name> &name);
17173 void set_parent_in_children();
17180 #endif // !NMODL_AST_FUNCTION_CALL_HPP 17181 #ifndef NMODL_AST_FIRST_LAST_TYPE_INDEX_HPP 17182 #define NMODL_AST_FIRST_LAST_TYPE_INDEX_HPP 17265 return "FirstLastTypeIndex";
17280 shared_from_this());
17309 token = std::make_shared<ModToken>(tok);
17367 void set_parent_in_children();
17374 #endif // !NMODL_AST_FIRST_LAST_TYPE_INDEX_HPP 17375 #ifndef NMODL_AST_WATCH_HPP 17376 #define NMODL_AST_WATCH_HPP 17406 explicit Watch(
const std::shared_ptr<Expression> &expression,
17407 const std::shared_ptr<Expression> &value);
17410 virtual ~
Watch() =
default;
17466 return std::static_pointer_cast<
Watch>(shared_from_this());
17473 return std::static_pointer_cast<
const Watch>(shared_from_this());
17511 token = std::make_shared<ModToken>(tok);
17517 void set_expression(std::shared_ptr<Expression> &&expression);
17522 void set_expression(
const std::shared_ptr<Expression> &expression);
17527 void set_value(std::shared_ptr<Expression> &&value);
17532 void set_value(
const std::shared_ptr<Expression> &value);
17575 void set_parent_in_children();
17582 #endif // !NMODL_AST_WATCH_HPP 17583 #ifndef NMODL_AST_QUEUE_EXPRESSION_TYPE_HPP 17584 #define NMODL_AST_QUEUE_EXPRESSION_TYPE_HPP 17667 return "QueueExpressionType";
17682 shared_from_this());
17711 token = std::make_shared<ModToken>(tok);
17769 void set_parent_in_children();
17776 #endif // !NMODL_AST_QUEUE_EXPRESSION_TYPE_HPP 17777 #ifndef NMODL_AST_MATCH_HPP 17778 #define NMODL_AST_MATCH_HPP 17808 explicit Match(
const std::shared_ptr<Identifier> &name,
17809 const std::shared_ptr<Expression> &expression);
17812 virtual ~
Match() =
default;
17868 return std::static_pointer_cast<
Match>(shared_from_this());
17875 return std::static_pointer_cast<
const Match>(shared_from_this());
17893 const std::shared_ptr<Identifier> &
get_name() const noexcept {
return name; }
17911 token = std::make_shared<ModToken>(tok);
17917 void set_name(std::shared_ptr<Identifier> &&name);
17922 void set_name(
const std::shared_ptr<Identifier> &name);
17927 void set_expression(std::shared_ptr<Expression> &&expression);
17932 void set_expression(
const std::shared_ptr<Expression> &expression);
17975 void set_parent_in_children();
17982 #endif // !NMODL_AST_MATCH_HPP 17983 #ifndef NMODL_AST_BA_BLOCK_TYPE_HPP 17984 #define NMODL_AST_BA_BLOCK_TYPE_HPP 18069 return "BABlockType";
18076 return std::static_pointer_cast<
BABlockType>(shared_from_this());
18083 return std::static_pointer_cast<
const BABlockType>(shared_from_this());
18112 token = std::make_shared<ModToken>(tok);
18118 void set_value(
BAType value);
18170 void set_parent_in_children();
18177 #endif // !NMODL_AST_BA_BLOCK_TYPE_HPP 18178 #ifndef NMODL_AST_UNIT_DEF_HPP 18179 #define NMODL_AST_UNIT_DEF_HPP 18209 explicit UnitDef(
const std::shared_ptr<Unit> &unit1,
18210 const std::shared_ptr<Unit> &unit2);
18213 virtual ~
UnitDef() =
default;
18269 return std::static_pointer_cast<
UnitDef>(shared_from_this());
18276 return std::static_pointer_cast<
const UnitDef>(shared_from_this());
18307 const std::shared_ptr<Unit> &
get_unit1() const noexcept {
return unit1; }
18312 const std::shared_ptr<Unit> &
get_unit2() const noexcept {
return unit2; }
18323 token = std::make_shared<ModToken>(tok);
18329 void set_unit1(std::shared_ptr<Unit> &&unit1);
18334 void set_unit1(
const std::shared_ptr<Unit> &unit1);
18339 void set_unit2(std::shared_ptr<Unit> &&unit2);
18344 void set_unit2(
const std::shared_ptr<Unit> &unit2);
18387 void set_parent_in_children();
18394 #endif // !NMODL_AST_UNIT_DEF_HPP 18395 #ifndef NMODL_AST_FACTOR_DEF_HPP 18396 #define NMODL_AST_FACTOR_DEF_HPP 18433 explicit FactorDef(
const std::shared_ptr<Name> &name,
18434 const std::shared_ptr<Double> &value,
18435 const std::shared_ptr<Unit> &unit1,
18436 const std::shared_ptr<Boolean> >,
18437 const std::shared_ptr<Unit> &unit2);
18493 return "FactorDef";
18500 return std::static_pointer_cast<
FactorDef>(shared_from_this());
18507 return std::static_pointer_cast<
const FactorDef>(shared_from_this());
18538 const std::shared_ptr<Name> &
get_name() const noexcept {
return name; }
18543 const std::shared_ptr<Double> &
get_value() const noexcept {
return value; }
18548 const std::shared_ptr<Unit> &
get_unit1() const noexcept {
return unit1; }
18553 const std::shared_ptr<Boolean> &
get_gt() const noexcept {
return gt; }
18558 const std::shared_ptr<Unit> &
get_unit2() const noexcept {
return unit2; }
18569 token = std::make_shared<ModToken>(tok);
18575 void set_name(std::shared_ptr<Name> &&name);
18580 void set_name(
const std::shared_ptr<Name> &name);
18585 void set_value(std::shared_ptr<Double> &&value);
18590 void set_value(
const std::shared_ptr<Double> &value);
18595 void set_unit1(std::shared_ptr<Unit> &&unit1);
18600 void set_unit1(
const std::shared_ptr<Unit> &unit1);
18605 void set_gt(std::shared_ptr<Boolean> &>);
18610 void set_gt(
const std::shared_ptr<Boolean> >);
18615 void set_unit2(std::shared_ptr<Unit> &&unit2);
18620 void set_unit2(
const std::shared_ptr<Unit> &unit2);
18663 void set_parent_in_children();
18670 #endif // !NMODL_AST_FACTOR_DEF_HPP 18671 #ifndef NMODL_AST_VALENCE_HPP 18672 #define NMODL_AST_VALENCE_HPP 18702 explicit Valence(
const std::shared_ptr<Name> &type,
18703 const std::shared_ptr<Double> &value);
18706 virtual ~
Valence() =
default;
18762 return std::static_pointer_cast<
Valence>(shared_from_this());
18769 return std::static_pointer_cast<
const Valence>(shared_from_this());
18787 const std::shared_ptr<Name> &
get_type() const noexcept {
return type; }
18792 const std::shared_ptr<Double> &
get_value() const noexcept {
return value; }
18803 token = std::make_shared<ModToken>(tok);
18809 void set_type(std::shared_ptr<Name> &&type);
18814 void set_type(
const std::shared_ptr<Name> &type);
18819 void set_value(std::shared_ptr<Double> &&value);
18824 void set_value(
const std::shared_ptr<Double> &value);
18867 void set_parent_in_children();
18874 #endif // !NMODL_AST_VALENCE_HPP 18875 #ifndef NMODL_AST_UNIT_STATE_HPP 18876 #define NMODL_AST_UNIT_STATE_HPP 18957 return "UnitState";
18964 return std::static_pointer_cast<
UnitState>(shared_from_this());
18971 return std::static_pointer_cast<
const UnitState>(shared_from_this());
19000 token = std::make_shared<ModToken>(tok);
19058 void set_parent_in_children();
19065 #endif // !NMODL_AST_UNIT_STATE_HPP 19066 #ifndef NMODL_AST_LOCAL_LIST_STATEMENT_HPP 19067 #define NMODL_AST_LOCAL_LIST_STATEMENT_HPP 19150 return "LocalListStatement";
19178 shared_from_this());
19197 variables.emplace_back(n);
19207 variables.emplace_back(n);
19209 n->set_parent(
this);
19215 LocalVarVector::const_iterator
19218 return variables.erase(first_it);
19223 LocalVarVector::const_iterator
19225 LocalVarVector::const_iterator last) {
19228 return variables.erase(first_it, last_it);
19236 auto first = variables.begin();
19237 auto last = variables.end();
19238 auto result = first;
19240 while (first != last) {
19243 if (to_be_erased.erase(first->get()) == 0) {
19244 reset_local_var(result, *first);
19250 size_t out = last - result;
19251 erase_local_var(result, last);
19259 LocalVarVector::const_iterator
19261 const std::shared_ptr<LocalVar> &n) {
19262 n->set_parent(
this);
19264 return variables.insert(pos_it, n);
19269 template <
class NodeType,
class InputIterator>
19271 InputIterator first, InputIterator last) {
19273 for (
auto it = first; it != last; ++it) {
19276 n->set_parent(
this);
19281 variables.insert(pos_it, first_it, last_it);
19291 variables[position - variables.begin()].reset(n);
19298 std::shared_ptr<LocalVar> n) {
19300 n->set_parent(
this);
19302 variables[position - variables.begin()] = n;
19319 token = std::make_shared<ModToken>(tok);
19374 void set_parent_in_children();
19381 #endif // !NMODL_AST_LOCAL_LIST_STATEMENT_HPP 19382 #ifndef NMODL_AST_MODEL_HPP 19383 #define NMODL_AST_MODEL_HPP 19411 explicit Model(
const std::shared_ptr<String> &title);
19414 virtual ~
Model() =
default;
19483 return std::static_pointer_cast<
Model>(shared_from_this());
19490 return std::static_pointer_cast<
const Model>(shared_from_this());
19508 const std::shared_ptr<String> &
get_title() const noexcept {
return title; }
19519 token = std::make_shared<ModToken>(tok);
19525 void set_title(std::shared_ptr<String> &&title);
19530 void set_title(
const std::shared_ptr<String> &title);
19573 void set_parent_in_children();
19580 #endif // !NMODL_AST_MODEL_HPP 19581 #ifndef NMODL_AST_DEFINE_HPP 19582 #define NMODL_AST_DEFINE_HPP 19612 explicit Define(
const std::shared_ptr<Name> &name,
19613 const std::shared_ptr<Integer> &value);
19616 virtual ~
Define() =
default;
19685 return std::static_pointer_cast<
Define>(shared_from_this());
19692 return std::static_pointer_cast<
const Define>(shared_from_this());
19723 const std::shared_ptr<Name> &
get_name() const noexcept {
return name; }
19728 const std::shared_ptr<Integer> &
get_value() const noexcept {
return value; }
19739 token = std::make_shared<ModToken>(tok);
19745 void set_name(std::shared_ptr<Name> &&name);
19750 void set_name(
const std::shared_ptr<Name> &name);
19755 void set_value(std::shared_ptr<Integer> &&value);
19760 void set_value(
const std::shared_ptr<Integer> &value);
19803 void set_parent_in_children();
19810 #endif // !NMODL_AST_DEFINE_HPP 19811 #ifndef NMODL_AST_INCLUDE_HPP 19812 #define NMODL_AST_INCLUDE_HPP 19840 explicit Include(
const std::shared_ptr<String> &filename);
19843 virtual ~
Include() =
default;
19912 return std::static_pointer_cast<
Include>(shared_from_this());
19919 return std::static_pointer_cast<
const Include>(shared_from_this());
19950 token = std::make_shared<ModToken>(tok);
19956 void set_filename(std::shared_ptr<String> &&filename);
19961 void set_filename(
const std::shared_ptr<String> &filename);
20004 void set_parent_in_children();
20011 #endif // !NMODL_AST_INCLUDE_HPP 20012 #ifndef NMODL_AST_PARAM_ASSIGN_HPP 20013 #define NMODL_AST_PARAM_ASSIGN_HPP 20048 explicit ParamAssign(
const std::shared_ptr<Identifier> &name,
20049 const std::shared_ptr<Number> &value,
20050 const std::shared_ptr<Unit> &unit,
20051 const std::shared_ptr<Limits> &limit);
20105 return "ParamAssign";
20112 return std::static_pointer_cast<
ParamAssign>(shared_from_this());
20119 return std::static_pointer_cast<
const ParamAssign>(shared_from_this());
20150 const std::shared_ptr<Identifier> &
get_name() const noexcept {
return name; }
20155 const std::shared_ptr<Number> &
get_value() const noexcept {
return value; }
20160 const std::shared_ptr<Unit> &
get_unit() const noexcept {
return unit; }
20165 const std::shared_ptr<Limits> &
get_limit() const noexcept {
return limit; }
20176 token = std::make_shared<ModToken>(tok);
20182 void set_name(std::shared_ptr<Identifier> &&name);
20187 void set_name(
const std::shared_ptr<Identifier> &name);
20192 void set_value(std::shared_ptr<Number> &&value);
20197 void set_value(
const std::shared_ptr<Number> &value);
20202 void set_unit(std::shared_ptr<Unit> &&unit);
20207 void set_unit(
const std::shared_ptr<Unit> &unit);
20212 void set_limit(std::shared_ptr<Limits> &&limit);
20217 void set_limit(
const std::shared_ptr<Limits> &limit);
20260 void set_parent_in_children();
20267 #endif // !NMODL_AST_PARAM_ASSIGN_HPP 20268 #ifndef NMODL_AST_STEPPED_HPP 20269 #define NMODL_AST_STEPPED_HPP 20301 explicit Stepped(
const std::shared_ptr<Name> &name,
20303 const std::shared_ptr<Unit> &unit);
20306 virtual ~
Stepped() =
default;
20362 return std::static_pointer_cast<
Stepped>(shared_from_this());
20369 return std::static_pointer_cast<
const Stepped>(shared_from_this());
20387 const std::shared_ptr<Name> &
get_name() const noexcept {
return name; }
20397 const std::shared_ptr<Unit> &
get_unit() const noexcept {
return unit; }
20408 token = std::make_shared<ModToken>(tok);
20414 void set_name(std::shared_ptr<Name> &&name);
20419 void set_name(
const std::shared_ptr<Name> &name);
20434 void set_unit(std::shared_ptr<Unit> &&unit);
20439 void set_unit(
const std::shared_ptr<Unit> &unit);
20482 void set_parent_in_children();
20489 #endif // !NMODL_AST_STEPPED_HPP 20490 #ifndef NMODL_AST_INDEPENDENT_DEFINITION_HPP 20491 #define NMODL_AST_INDEPENDENT_DEFINITION_HPP 20534 const std::shared_ptr<Name> &name,
20535 const std::shared_ptr<Number> &from,
20536 const std::shared_ptr<Number> &to,
20537 const std::shared_ptr<Integer> &with,
20538 const std::shared_ptr<Number> &start,
20539 const std::shared_ptr<Unit> &unit);
20595 return "IndependentDefinition";
20610 shared_from_this());
20628 const std::shared_ptr<Boolean> &
get_sweep() const noexcept {
return sweep; }
20633 const std::shared_ptr<Name> &
get_name() const noexcept {
return name; }
20638 const std::shared_ptr<Number> &
get_from() const noexcept {
return from; }
20643 const std::shared_ptr<Number> &
get_to() const noexcept {
return to; }
20648 const std::shared_ptr<Integer> &
get_with() const noexcept {
return with; }
20653 const std::shared_ptr<Number> &
get_start() const noexcept {
return start; }
20658 const std::shared_ptr<Unit> &
get_unit() const noexcept {
return unit; }
20669 token = std::make_shared<ModToken>(tok);
20676 void set_sweep(std::shared_ptr<Boolean> &&sweep);
20681 void set_sweep(
const std::shared_ptr<Boolean> &sweep);
20687 void set_name(std::shared_ptr<Name> &&name);
20692 void set_name(
const std::shared_ptr<Name> &name);
20698 void set_from(std::shared_ptr<Number> &&from);
20703 void set_from(
const std::shared_ptr<Number> &from);
20709 void set_to(std::shared_ptr<Number> &&to);
20714 void set_to(
const std::shared_ptr<Number> &to);
20720 void set_with(std::shared_ptr<Integer> &&with);
20725 void set_with(
const std::shared_ptr<Integer> &with);
20731 void set_start(std::shared_ptr<Number> &&start);
20736 void set_start(
const std::shared_ptr<Number> &start);
20742 void set_unit(std::shared_ptr<Unit> &&unit);
20747 void set_unit(
const std::shared_ptr<Unit> &unit);
20790 void set_parent_in_children();
20797 #endif // !NMODL_AST_INDEPENDENT_DEFINITION_HPP 20798 #ifndef NMODL_AST_ASSIGNED_DEFINITION_HPP 20799 #define NMODL_AST_ASSIGNED_DEFINITION_HPP 20842 const std::shared_ptr<Integer> &length,
20843 const std::shared_ptr<Number> &from,
20844 const std::shared_ptr<Number> &to,
20845 const std::shared_ptr<Number> &start,
20846 const std::shared_ptr<Unit> &unit,
20847 const std::shared_ptr<Double> &abstol);
20903 return "AssignedDefinition";
20918 shared_from_this());
20949 const std::shared_ptr<Identifier> &
get_name() const noexcept {
return name; }
20954 const std::shared_ptr<Integer> &
get_length() const noexcept {
return length; }
20959 const std::shared_ptr<Number> &
get_from() const noexcept {
return from; }
20964 const std::shared_ptr<Number> &
get_to() const noexcept {
return to; }
20969 const std::shared_ptr<Number> &
get_start() const noexcept {
return start; }
20974 const std::shared_ptr<Unit> &
get_unit() const noexcept {
return unit; }
20979 const std::shared_ptr<Double> &
get_abstol() const noexcept {
return abstol; }
20990 token = std::make_shared<ModToken>(tok);
20997 void set_name(std::shared_ptr<Identifier> &&name);
21002 void set_name(
const std::shared_ptr<Identifier> &name);
21008 void set_length(std::shared_ptr<Integer> &&length);
21013 void set_length(
const std::shared_ptr<Integer> &length);
21019 void set_from(std::shared_ptr<Number> &&from);
21024 void set_from(
const std::shared_ptr<Number> &from);
21030 void set_to(std::shared_ptr<Number> &&to);
21035 void set_to(
const std::shared_ptr<Number> &to);
21041 void set_start(std::shared_ptr<Number> &&start);
21046 void set_start(
const std::shared_ptr<Number> &start);
21052 void set_unit(std::shared_ptr<Unit> &&unit);
21057 void set_unit(
const std::shared_ptr<Unit> &unit);
21063 void set_abstol(std::shared_ptr<Double> &&abstol);
21068 void set_abstol(
const std::shared_ptr<Double> &abstol);
21111 void set_parent_in_children();
21118 #endif // !NMODL_AST_ASSIGNED_DEFINITION_HPP 21119 #ifndef NMODL_AST_PLOT_DECLARATION_HPP 21120 #define NMODL_AST_PLOT_DECLARATION_HPP 21151 const std::shared_ptr<PlotVar> &name);
21205 return "PlotDeclaration";
21225 return std::static_pointer_cast<
PlotDeclaration>(shared_from_this());
21232 return std::static_pointer_cast<
const PlotDeclaration>(shared_from_this());
21255 const std::shared_ptr<PlotVar> &
get_name() const noexcept {
return name; }
21266 token = std::make_shared<ModToken>(tok);
21284 void set_name(std::shared_ptr<PlotVar> &&name);
21289 void set_name(
const std::shared_ptr<PlotVar> &name);
21332 void set_parent_in_children();
21339 #endif // !NMODL_AST_PLOT_DECLARATION_HPP 21340 #ifndef NMODL_AST_CONDUCTANCE_HINT_HPP 21341 #define NMODL_AST_CONDUCTANCE_HINT_HPP 21380 const std::shared_ptr<Name> &ion);
21434 return "ConductanceHint";
21449 return "CONDUCTANCE ";
21456 return std::static_pointer_cast<
ConductanceHint>(shared_from_this());
21463 return std::static_pointer_cast<
const ConductanceHint>(shared_from_this());
21482 return conductance;
21488 const std::shared_ptr<Name> &
get_ion() const noexcept {
return ion; }
21499 token = std::make_shared<ModToken>(tok);
21506 void set_conductance(std::shared_ptr<Name> &&conductance);
21511 void set_conductance(
const std::shared_ptr<Name> &conductance);
21517 void set_ion(std::shared_ptr<Name> &&ion);
21522 void set_ion(
const std::shared_ptr<Name> &ion);
21565 void set_parent_in_children();
21572 #endif // !NMODL_AST_CONDUCTANCE_HINT_HPP 21573 #ifndef NMODL_AST_EXPRESSION_STATEMENT_HPP 21574 #define NMODL_AST_EXPRESSION_STATEMENT_HPP 21658 return "ExpressionStatement";
21673 shared_from_this());
21704 token = std::make_shared<ModToken>(tok);
21711 void set_expression(std::shared_ptr<Expression> &&expression);
21716 void set_expression(
const std::shared_ptr<Expression> &expression);
21759 void set_parent_in_children();
21766 #endif // !NMODL_AST_EXPRESSION_STATEMENT_HPP 21767 #ifndef NMODL_AST_PROTECT_STATEMENT_HPP 21768 #define NMODL_AST_PROTECT_STATEMENT_HPP 21852 return "ProtectStatement";
21879 return std::static_pointer_cast<
const ProtectStatement>(shared_from_this());
21910 token = std::make_shared<ModToken>(tok);
21917 void set_expression(std::shared_ptr<Expression> &&expression);
21922 void set_expression(
const std::shared_ptr<Expression> &expression);
21965 void set_parent_in_children();
21972 #endif // !NMODL_AST_PROTECT_STATEMENT_HPP 21973 #ifndef NMODL_AST_FROM_STATEMENT_HPP 21974 #define NMODL_AST_FROM_STATEMENT_HPP 21997 std::shared_ptr<Expression>
to;
22013 const std::shared_ptr<Name> &name,
22014 const std::shared_ptr<Expression> &from,
22015 const std::shared_ptr<Expression> &to,
22016 const std::shared_ptr<Expression> &increment,
22017 const std::shared_ptr<StatementBlock> &statement_block);
22071 return "FromStatement";
22091 return std::static_pointer_cast<
FromStatement>(shared_from_this());
22098 return std::static_pointer_cast<
const FromStatement>(shared_from_this());
22129 const std::shared_ptr<Name> &
get_name() const noexcept {
return name; }
22134 const std::shared_ptr<Expression> &
get_from() const noexcept {
return from; }
22139 const std::shared_ptr<Expression> &
get_to() const noexcept {
return to; }
22152 noexcept
override {
22153 return statement_block;
22165 token = std::make_shared<ModToken>(tok);
22172 void set_name(std::shared_ptr<Name> &&name);
22177 void set_name(
const std::shared_ptr<Name> &name);
22183 void set_from(std::shared_ptr<Expression> &&from);
22188 void set_from(
const std::shared_ptr<Expression> &from);
22193 void set_to(std::shared_ptr<Expression> &&to);
22198 void set_to(
const std::shared_ptr<Expression> &to);
22204 void set_increment(std::shared_ptr<Expression> &&increment);
22209 void set_increment(
const std::shared_ptr<Expression> &increment);
22215 void set_statement_block(std::shared_ptr<StatementBlock> &&statement_block);
22221 set_statement_block(
const std::shared_ptr<StatementBlock> &statement_block);
22264 void set_parent_in_children();
22271 #endif // !NMODL_AST_FROM_STATEMENT_HPP 22272 #ifndef NMODL_AST_FOR_ALL_STATEMENT_HPP 22273 #define NMODL_AST_FOR_ALL_STATEMENT_HPP 22304 const std::shared_ptr<Name> &name,
22305 const std::shared_ptr<StatementBlock> &statement_block);
22359 return "ForAllStatement";
22379 return std::static_pointer_cast<
ForAllStatement>(shared_from_this());
22386 return std::static_pointer_cast<
const ForAllStatement>(shared_from_this());
22404 const std::shared_ptr<Name> &
get_name() const noexcept {
return name; }
22410 noexcept
override {
22411 return statement_block;
22423 token = std::make_shared<ModToken>(tok);
22430 void set_name(std::shared_ptr<Name> &&name);
22435 void set_name(
const std::shared_ptr<Name> &name);
22441 void set_statement_block(std::shared_ptr<StatementBlock> &&statement_block);
22447 set_statement_block(
const std::shared_ptr<StatementBlock> &statement_block);
22490 void set_parent_in_children();
22497 #endif // !NMODL_AST_FOR_ALL_STATEMENT_HPP 22498 #ifndef NMODL_AST_WHILE_STATEMENT_HPP 22499 #define NMODL_AST_WHILE_STATEMENT_HPP 22531 const std::shared_ptr<Expression> &condition,
22532 const std::shared_ptr<StatementBlock> &statement_block);
22586 return "WhileStatement";
22606 return std::static_pointer_cast<
WhileStatement>(shared_from_this());
22613 return std::static_pointer_cast<
const WhileStatement>(shared_from_this());
22639 noexcept
override {
22640 return statement_block;
22652 token = std::make_shared<ModToken>(tok);
22659 void set_condition(std::shared_ptr<Expression> &&condition);
22664 void set_condition(
const std::shared_ptr<Expression> &condition);
22670 void set_statement_block(std::shared_ptr<StatementBlock> &&statement_block);
22676 set_statement_block(
const std::shared_ptr<StatementBlock> &statement_block);
22719 void set_parent_in_children();
22726 #endif // !NMODL_AST_WHILE_STATEMENT_HPP 22727 #ifndef NMODL_AST_IF_STATEMENT_HPP 22728 #define NMODL_AST_IF_STATEMENT_HPP 22763 explicit IfStatement(
const std::shared_ptr<Expression> &condition,
22764 const std::shared_ptr<StatementBlock> &statement_block,
22766 const std::shared_ptr<ElseStatement> &elses);
22820 return "IfStatement";
22840 return std::static_pointer_cast<
IfStatement>(shared_from_this());
22847 return std::static_pointer_cast<
const IfStatement>(shared_from_this());
22873 noexcept
override {
22874 return statement_block;
22885 const std::shared_ptr<ElseStatement> &
get_elses() const noexcept {
22898 token = std::make_shared<ModToken>(tok);
22905 void set_condition(std::shared_ptr<Expression> &&condition);
22910 void set_condition(
const std::shared_ptr<Expression> &condition);
22916 void set_statement_block(std::shared_ptr<StatementBlock> &&statement_block);
22922 set_statement_block(
const std::shared_ptr<StatementBlock> &statement_block);
22938 void set_elses(std::shared_ptr<ElseStatement> &&elses);
22943 void set_elses(
const std::shared_ptr<ElseStatement> &elses);
22986 void set_parent_in_children();
22993 #endif // !NMODL_AST_IF_STATEMENT_HPP 22994 #ifndef NMODL_AST_ELSE_IF_STATEMENT_HPP 22995 #define NMODL_AST_ELSE_IF_STATEMENT_HPP 23027 const std::shared_ptr<Expression> &condition,
23028 const std::shared_ptr<StatementBlock> &statement_block);
23082 return "ElseIfStatement";
23102 return std::static_pointer_cast<
ElseIfStatement>(shared_from_this());
23109 return std::static_pointer_cast<
const ElseIfStatement>(shared_from_this());
23135 noexcept
override {
23136 return statement_block;
23148 token = std::make_shared<ModToken>(tok);
23155 void set_condition(std::shared_ptr<Expression> &&condition);
23160 void set_condition(
const std::shared_ptr<Expression> &condition);
23166 void set_statement_block(std::shared_ptr<StatementBlock> &&statement_block);
23172 set_statement_block(
const std::shared_ptr<StatementBlock> &statement_block);
23215 void set_parent_in_children();
23222 #endif // !NMODL_AST_ELSE_IF_STATEMENT_HPP 23223 #ifndef NMODL_AST_ELSE_STATEMENT_HPP 23224 #define NMODL_AST_ELSE_STATEMENT_HPP 23253 const std::shared_ptr<StatementBlock> &statement_block);
23307 return "ElseStatement";
23327 return std::static_pointer_cast<
ElseStatement>(shared_from_this());
23334 return std::static_pointer_cast<
const ElseStatement>(shared_from_this());
23353 noexcept
override {
23354 return statement_block;
23366 token = std::make_shared<ModToken>(tok);
23373 void set_statement_block(std::shared_ptr<StatementBlock> &&statement_block);
23379 set_statement_block(
const std::shared_ptr<StatementBlock> &statement_block);
23422 void set_parent_in_children();
23429 #endif // !NMODL_AST_ELSE_STATEMENT_HPP 23430 #ifndef NMODL_AST_PARTIAL_EQUATION_HPP 23431 #define NMODL_AST_PARTIAL_EQUATION_HPP 23467 const std::shared_ptr<Name> &name1,
23468 const std::shared_ptr<Name> &name2,
23469 const std::shared_ptr<Name> &name3);
23523 return "PartialEquation";
23530 return std::static_pointer_cast<
PartialEquation>(shared_from_this());
23537 return std::static_pointer_cast<
const PartialEquation>(shared_from_this());
23555 const std::shared_ptr<PrimeName> &
get_prime() const noexcept {
return prime; }
23560 const std::shared_ptr<Name> &
get_name1() const noexcept {
return name1; }
23565 const std::shared_ptr<Name> &
get_name2() const noexcept {
return name2; }
23570 const std::shared_ptr<Name> &
get_name3() const noexcept {
return name3; }
23581 token = std::make_shared<ModToken>(tok);
23588 void set_prime(std::shared_ptr<PrimeName> &&prime);
23593 void set_prime(
const std::shared_ptr<PrimeName> &prime);
23599 void set_name1(std::shared_ptr<Name> &&name1);
23604 void set_name1(
const std::shared_ptr<Name> &name1);
23610 void set_name2(std::shared_ptr<Name> &&name2);
23615 void set_name2(
const std::shared_ptr<Name> &name2);
23621 void set_name3(std::shared_ptr<Name> &&name3);
23626 void set_name3(
const std::shared_ptr<Name> &name3);
23669 void set_parent_in_children();
23676 #endif // !NMODL_AST_PARTIAL_EQUATION_HPP 23677 #ifndef NMODL_AST_PARTIAL_BOUNDARY_HPP 23678 #define NMODL_AST_PARTIAL_BOUNDARY_HPP 23723 const std::shared_ptr<Identifier> &name,
23724 const std::shared_ptr<FirstLastTypeIndex> &index,
23725 const std::shared_ptr<Expression> &expression,
23726 const std::shared_ptr<Name> &name1,
23727 const std::shared_ptr<Name> &del2,
23728 const std::shared_ptr<Name> &name2,
23729 const std::shared_ptr<Name> &name3);
23783 return "PartialBoundary";
23803 return std::static_pointer_cast<
PartialBoundary>(shared_from_this());
23810 return std::static_pointer_cast<
const PartialBoundary>(shared_from_this());
23828 const std::shared_ptr<Name> &
get_del() const noexcept {
return del; }
23833 const std::shared_ptr<Identifier> &
get_name() const noexcept {
return name; }
23838 const std::shared_ptr<FirstLastTypeIndex> &
get_index() const noexcept {
23852 const std::shared_ptr<Name> &
get_name1() const noexcept {
return name1; }
23857 const std::shared_ptr<Name> &
get_del2() const noexcept {
return del2; }
23862 const std::shared_ptr<Name> &
get_name2() const noexcept {
return name2; }
23867 const std::shared_ptr<Name> &
get_name3() const noexcept {
return name3; }
23878 token = std::make_shared<ModToken>(tok);
23885 void set_del(std::shared_ptr<Name> &&del);
23890 void set_del(
const std::shared_ptr<Name> &del);
23896 void set_name(std::shared_ptr<Identifier> &&name);
23901 void set_name(
const std::shared_ptr<Identifier> &name);
23907 void set_index(std::shared_ptr<FirstLastTypeIndex> &&index);
23912 void set_index(
const std::shared_ptr<FirstLastTypeIndex> &index);
23918 void set_expression(std::shared_ptr<Expression> &&expression);
23923 void set_expression(
const std::shared_ptr<Expression> &expression);
23929 void set_name1(std::shared_ptr<Name> &&name1);
23934 void set_name1(
const std::shared_ptr<Name> &name1);
23940 void set_del2(std::shared_ptr<Name> &&del2);
23945 void set_del2(
const std::shared_ptr<Name> &del2);
23951 void set_name2(std::shared_ptr<Name> &&name2);
23956 void set_name2(
const std::shared_ptr<Name> &name2);
23962 void set_name3(std::shared_ptr<Name> &&name3);
23967 void set_name3(
const std::shared_ptr<Name> &name3);
24010 void set_parent_in_children();
24017 #endif // !NMODL_AST_PARTIAL_BOUNDARY_HPP 24018 #ifndef NMODL_AST_WATCH_STATEMENT_HPP 24019 #define NMODL_AST_WATCH_STATEMENT_HPP 24100 return "WatchStatement";
24120 return std::static_pointer_cast<
WatchStatement>(shared_from_this());
24127 return std::static_pointer_cast<
const WatchStatement>(shared_from_this());
24146 statements.emplace_back(n);
24156 statements.emplace_back(n);
24158 n->set_parent(
this);
24164 WatchVector::const_iterator
erase_watch(WatchVector::const_iterator first) {
24166 return statements.erase(first_it);
24171 WatchVector::const_iterator
erase_watch(WatchVector::const_iterator first,
24172 WatchVector::const_iterator last) {
24175 return statements.erase(first_it, last_it);
24183 auto first = statements.begin();
24184 auto last = statements.end();
24185 auto result = first;
24187 while (first != last) {
24190 if (to_be_erased.erase(first->get()) == 0) {
24191 reset_watch(result, *first);
24197 size_t out = last - result;
24198 erase_watch(result, last);
24207 const std::shared_ptr<Watch> &n) {
24208 n->set_parent(
this);
24210 return statements.insert(pos_it, n);
24215 template <
class NodeType,
class InputIterator>
24217 InputIterator first, InputIterator last) {
24219 for (
auto it = first; it != last; ++it) {
24222 n->set_parent(
this);
24227 statements.insert(pos_it, first_it, last_it);
24237 statements[position - statements.begin()].reset(n);
24244 std::shared_ptr<Watch> n) {
24246 n->set_parent(
this);
24248 statements[position - statements.begin()] = n;
24265 token = std::make_shared<ModToken>(tok);
24277 void set_statements(
const WatchVector &statements);
24320 void set_parent_in_children();
24327 #endif // !NMODL_AST_WATCH_STATEMENT_HPP 24328 #ifndef NMODL_AST_MUTEX_LOCK_HPP 24329 #define NMODL_AST_MUTEX_LOCK_HPP 24405 return "MutexLock";
24425 return std::static_pointer_cast<
MutexLock>(shared_from_this());
24432 return std::static_pointer_cast<
const MutexLock>(shared_from_this());
24456 token = std::make_shared<ModToken>(tok);
24497 #endif // !NMODL_AST_MUTEX_LOCK_HPP 24498 #ifndef NMODL_AST_MUTEX_UNLOCK_HPP 24499 #define NMODL_AST_MUTEX_UNLOCK_HPP 24575 return "MutexUnlock";
24595 return std::static_pointer_cast<
MutexUnlock>(shared_from_this());
24602 return std::static_pointer_cast<
const MutexUnlock>(shared_from_this());
24626 token = std::make_shared<ModToken>(tok);
24667 #endif // !NMODL_AST_MUTEX_UNLOCK_HPP 24668 #ifndef NMODL_AST_RESET_HPP 24669 #define NMODL_AST_RESET_HPP 24694 virtual ~
Reset() =
default;
24763 return std::static_pointer_cast<
Reset>(shared_from_this());
24770 return std::static_pointer_cast<
const Reset>(shared_from_this());
24794 token = std::make_shared<ModToken>(tok);
24835 #endif // !NMODL_AST_RESET_HPP 24836 #ifndef NMODL_AST_SENS_HPP 24837 #define NMODL_AST_SENS_HPP 24867 virtual ~
Sens() =
default;
24875 bool is_sens() const noexcept
override {
return true; }
24936 return std::static_pointer_cast<
Sens>(shared_from_this());
24943 return std::static_pointer_cast<
const Sens>(shared_from_this());
24972 token = std::make_shared<ModToken>(tok);
25026 void set_parent_in_children();
25033 #endif // !NMODL_AST_SENS_HPP 25034 #ifndef NMODL_AST_CONSERVE_HPP 25035 #define NMODL_AST_CONSERVE_HPP 25065 explicit Conserve(
const std::shared_ptr<Expression> &react,
25066 const std::shared_ptr<Expression> &expr);
25140 return std::static_pointer_cast<
Conserve>(shared_from_this());
25147 return std::static_pointer_cast<
const Conserve>(shared_from_this());
25172 const std::shared_ptr<Expression> &
get_expr() const noexcept {
return expr; }
25183 token = std::make_shared<ModToken>(tok);
25189 void set_react(std::shared_ptr<Expression> &&react);
25194 void set_react(
const std::shared_ptr<Expression> &react);
25199 void set_expr(std::shared_ptr<Expression> &&expr);
25204 void set_expr(
const std::shared_ptr<Expression> &expr);
25247 void set_parent_in_children();
25254 #endif // !NMODL_AST_CONSERVE_HPP 25255 #ifndef NMODL_AST_COMPARTMENT_HPP 25256 #define NMODL_AST_COMPARTMENT_HPP 25288 explicit Compartment(
const std::shared_ptr<Name> &name,
25289 const std::shared_ptr<Expression> &expression,
25344 return "Compartment";
25364 return std::static_pointer_cast<
Compartment>(shared_from_this());
25371 return std::static_pointer_cast<
const Compartment>(shared_from_this());
25389 const std::shared_ptr<Name> &
get_name() const noexcept {
return name; }
25412 token = std::make_shared<ModToken>(tok);
25418 void set_name(std::shared_ptr<Name> &&name);
25423 void set_name(
const std::shared_ptr<Name> &name);
25429 void set_expression(std::shared_ptr<Expression> &&expression);
25434 void set_expression(
const std::shared_ptr<Expression> &expression);
25487 void set_parent_in_children();
25494 #endif // !NMODL_AST_COMPARTMENT_HPP 25495 #ifndef NMODL_AST_LON_DIFUSE_HPP 25496 #define NMODL_AST_LON_DIFUSE_HPP 25528 explicit LonDifuse(
const std::shared_ptr<Name> &name,
25529 const std::shared_ptr<Expression> &expression,
25584 return "LonDifuse";
25599 return "LONGITUDINAL_DIFFUSION";
25606 return std::static_pointer_cast<
LonDifuse>(shared_from_this());
25613 return std::static_pointer_cast<
const LonDifuse>(shared_from_this());
25631 const std::shared_ptr<Name> &
get_name() const noexcept {
return name; }
25654 token = std::make_shared<ModToken>(tok);
25660 void set_name(std::shared_ptr<Name> &&name);
25665 void set_name(
const std::shared_ptr<Name> &name);
25671 void set_expression(std::shared_ptr<Expression> &&expression);
25676 void set_expression(
const std::shared_ptr<Expression> &expression);
25729 void set_parent_in_children();
25736 #endif // !NMODL_AST_LON_DIFUSE_HPP 25737 #ifndef NMODL_AST_REACTION_STATEMENT_HPP 25738 #define NMODL_AST_REACTION_STATEMENT_HPP 25778 const std::shared_ptr<Expression> &reaction2,
25779 const std::shared_ptr<Expression> &expression1,
25780 const std::shared_ptr<Expression> &expression2);
25836 return "ReactionStatement";
25864 shared_from_this());
25902 return expression1;
25909 return expression2;
25921 token = std::make_shared<ModToken>(tok);
25928 void set_reaction1(std::shared_ptr<Expression> &&reaction1);
25933 void set_reaction1(
const std::shared_ptr<Expression> &reaction1);
25950 void set_reaction2(std::shared_ptr<Expression> &&reaction2);
25955 void set_reaction2(
const std::shared_ptr<Expression> &reaction2);
25961 void set_expression1(std::shared_ptr<Expression> &&expression1);
25966 void set_expression1(
const std::shared_ptr<Expression> &expression1);
25972 void set_expression2(std::shared_ptr<Expression> &&expression2);
25977 void set_expression2(
const std::shared_ptr<Expression> &expression2);
26020 void set_parent_in_children();
26027 #endif // !NMODL_AST_REACTION_STATEMENT_HPP 26028 #ifndef NMODL_AST_LAG_STATEMENT_HPP 26029 #define NMODL_AST_LAG_STATEMENT_HPP 26068 explicit LagStatement(
const std::shared_ptr<Identifier> &name,
26069 const std::shared_ptr<Name> &byname);
26123 return "LagStatement";
26143 return std::static_pointer_cast<
LagStatement>(shared_from_this());
26150 return std::static_pointer_cast<
const LagStatement>(shared_from_this());
26168 const std::shared_ptr<Identifier> &
get_name() const noexcept {
return name; }
26173 const std::shared_ptr<Name> &
get_byname() const noexcept {
return byname; }
26184 token = std::make_shared<ModToken>(tok);
26190 void set_name(std::shared_ptr<Identifier> &&name);
26195 void set_name(
const std::shared_ptr<Identifier> &name);
26201 void set_byname(std::shared_ptr<Name> &&byname);
26206 void set_byname(
const std::shared_ptr<Name> &byname);
26249 void set_parent_in_children();
26256 #endif // !NMODL_AST_LAG_STATEMENT_HPP 26257 #ifndef NMODL_AST_QUEUE_STATEMENT_HPP 26258 #define NMODL_AST_QUEUE_STATEMENT_HPP 26288 explicit QueueStatement(
const std::shared_ptr<QueueExpressionType> &qtype,
26289 const std::shared_ptr<Identifier> &name);
26343 return "QueueStatement";
26350 return std::static_pointer_cast<
QueueStatement>(shared_from_this());
26357 return std::static_pointer_cast<
const QueueStatement>(shared_from_this());
26375 const std::shared_ptr<QueueExpressionType> &
get_qtype() const noexcept {
26382 const std::shared_ptr<Identifier> &
get_name() const noexcept {
return name; }
26393 token = std::make_shared<ModToken>(tok);
26400 void set_qtype(std::shared_ptr<QueueExpressionType> &&qtype);
26405 void set_qtype(
const std::shared_ptr<QueueExpressionType> &qtype);
26411 void set_name(std::shared_ptr<Identifier> &&name);
26416 void set_name(
const std::shared_ptr<Identifier> &name);
26459 void set_parent_in_children();
26466 #endif // !NMODL_AST_QUEUE_STATEMENT_HPP 26467 #ifndef NMODL_AST_CONSTANT_STATEMENT_HPP 26468 #define NMODL_AST_CONSTANT_STATEMENT_HPP 26554 return "ConstantStatement";
26569 shared_from_this());
26600 token = std::make_shared<ModToken>(tok);
26607 void set_constant(std::shared_ptr<ConstantVar> &&constant);
26612 void set_constant(
const std::shared_ptr<ConstantVar> &constant);
26655 void set_parent_in_children();
26662 #endif // !NMODL_AST_CONSTANT_STATEMENT_HPP 26663 #ifndef NMODL_AST_TABLE_STATEMENT_HPP 26664 #define NMODL_AST_TABLE_STATEMENT_HPP 26689 std::shared_ptr<Expression>
to;
26703 const std::shared_ptr<Expression> &from,
26704 const std::shared_ptr<Expression> &to,
26705 const std::shared_ptr<Integer> &with);
26759 return "TableStatement";
26779 return std::static_pointer_cast<
TableStatement>(shared_from_this());
26786 return std::static_pointer_cast<
const TableStatement>(shared_from_this());
26814 const std::shared_ptr<Expression> &
get_from() const noexcept {
return from; }
26819 const std::shared_ptr<Expression> &
get_to() const noexcept {
return to; }
26824 const std::shared_ptr<Integer> &
get_with() const noexcept {
return with; }
26835 token = std::make_shared<ModToken>(tok);
26842 void set_table_vars(
NameVector &&table_vars);
26847 void set_table_vars(
const NameVector &table_vars);
26853 void set_depend_vars(
NameVector &&depend_vars);
26858 void set_depend_vars(
const NameVector &depend_vars);
26864 void set_from(std::shared_ptr<Expression> &&from);
26869 void set_from(
const std::shared_ptr<Expression> &from);
26874 void set_to(std::shared_ptr<Expression> &&to);
26879 void set_to(
const std::shared_ptr<Expression> &to);
26885 void set_with(std::shared_ptr<Integer> &&with);
26890 void set_with(
const std::shared_ptr<Integer> &with);
26933 void set_parent_in_children();
26940 #endif // !NMODL_AST_TABLE_STATEMENT_HPP 26941 #ifndef NMODL_AST_SUFFIX_HPP 26942 #define NMODL_AST_SUFFIX_HPP 26972 explicit Suffix(
const std::shared_ptr<Name> &type,
26973 const std::shared_ptr<Name> &name);
26976 virtual ~
Suffix() =
default;
27032 return std::static_pointer_cast<
Suffix>(shared_from_this());
27039 return std::static_pointer_cast<
const Suffix>(shared_from_this());
27057 const std::shared_ptr<Name> &
get_type() const noexcept {
return type; }
27075 const std::shared_ptr<Name> &
get_name() const noexcept {
return name; }
27086 token = std::make_shared<ModToken>(tok);
27092 void set_type(std::shared_ptr<Name> &&type);
27097 void set_type(
const std::shared_ptr<Name> &type);
27102 void set_name(std::shared_ptr<Name> &&name);
27107 void set_name(
const std::shared_ptr<Name> &name);
27150 void set_parent_in_children();
27157 #endif // !NMODL_AST_SUFFIX_HPP 27158 #ifndef NMODL_AST_USEION_HPP 27159 #define NMODL_AST_USEION_HPP 27197 explicit Useion(
const std::shared_ptr<Name> &name,
27200 const std::shared_ptr<Valence> &valence,
27201 const std::shared_ptr<String> &ontology_id);
27204 virtual ~
Useion() =
default;
27273 return std::static_pointer_cast<
Useion>(shared_from_this());
27280 return std::static_pointer_cast<
const Useion>(shared_from_this());
27311 const std::shared_ptr<Name> &
get_name() const noexcept {
return name; }
27334 return ontology_id;
27346 token = std::make_shared<ModToken>(tok);
27352 void set_name(std::shared_ptr<Name> &&name);
27357 void set_name(
const std::shared_ptr<Name> &name);
27382 void set_valence(std::shared_ptr<Valence> &&valence);
27387 void set_valence(
const std::shared_ptr<Valence> &valence);
27393 void set_ontology_id(std::shared_ptr<String> &&ontology_id);
27398 void set_ontology_id(
const std::shared_ptr<String> &ontology_id);
27441 void set_parent_in_children();
27448 #endif // !NMODL_AST_USEION_HPP 27449 #ifndef NMODL_AST_NONSPECIFIC_HPP 27450 #define NMODL_AST_NONSPECIFIC_HPP 27531 return "Nonspecific";
27546 return "NONSPECIFIC_CURRENT ";
27553 return std::static_pointer_cast<
Nonspecific>(shared_from_this());
27560 return std::static_pointer_cast<
const Nonspecific>(shared_from_this());
27591 token = std::make_shared<ModToken>(tok);
27646 void set_parent_in_children();
27653 #endif // !NMODL_AST_NONSPECIFIC_HPP 27654 #ifndef NMODL_AST_ELCTRODE_CURRENT_HPP 27655 #define NMODL_AST_ELCTRODE_CURRENT_HPP 27736 return "ElctrodeCurrent";
27751 return "ELECTRODE_CURRENT ";
27758 return std::static_pointer_cast<
ElctrodeCurrent>(shared_from_this());
27765 return std::static_pointer_cast<
const ElctrodeCurrent>(shared_from_this());
27796 token = std::make_shared<ModToken>(tok);
27851 void set_parent_in_children();
27858 #endif // !NMODL_AST_ELCTRODE_CURRENT_HPP 27859 #ifndef NMODL_AST_SECTION_HPP 27860 #define NMODL_AST_SECTION_HPP 27890 virtual ~
Section() =
default;
27959 return std::static_pointer_cast<
Section>(shared_from_this());
27966 return std::static_pointer_cast<
const Section>(shared_from_this());
27995 token = std::make_shared<ModToken>(tok);
28049 void set_parent_in_children();
28056 #endif // !NMODL_AST_SECTION_HPP 28057 #ifndef NMODL_AST_RANGE_HPP 28058 #define NMODL_AST_RANGE_HPP 28088 virtual ~
Range() =
default;
28157 return std::static_pointer_cast<
Range>(shared_from_this());
28164 return std::static_pointer_cast<
const Range>(shared_from_this());
28193 token = std::make_shared<ModToken>(tok);
28247 void set_parent_in_children();
28254 #endif // !NMODL_AST_RANGE_HPP 28255 #ifndef NMODL_AST_GLOBAL_HPP 28256 #define NMODL_AST_GLOBAL_HPP 28286 virtual ~
Global() =
default;
28355 return std::static_pointer_cast<
Global>(shared_from_this());
28362 return std::static_pointer_cast<
const Global>(shared_from_this());
28381 variables.emplace_back(n);
28391 variables.emplace_back(n);
28393 n->set_parent(
this);
28399 GlobalVarVector::const_iterator
28402 return variables.erase(first_it);
28407 GlobalVarVector::const_iterator
28409 GlobalVarVector::const_iterator last) {
28412 return variables.erase(first_it, last_it);
28420 auto first = variables.begin();
28421 auto last = variables.end();
28422 auto result = first;
28424 while (first != last) {
28427 if (to_be_erased.erase(first->get()) == 0) {
28428 reset_global_var(result, *first);
28434 size_t out = last - result;
28435 erase_global_var(result, last);
28443 GlobalVarVector::const_iterator
28445 const std::shared_ptr<GlobalVar> &n) {
28446 n->set_parent(
this);
28448 return variables.insert(pos_it, n);
28453 template <
class NodeType,
class InputIterator>
28455 InputIterator first, InputIterator last) {
28457 for (
auto it = first; it != last; ++it) {
28460 n->set_parent(
this);
28465 variables.insert(pos_it, first_it, last_it);
28476 variables[position - variables.begin()].reset(n);
28483 std::shared_ptr<GlobalVar> n) {
28485 n->set_parent(
this);
28487 variables[position - variables.begin()] = n;
28504 token = std::make_shared<ModToken>(tok);
28558 void set_parent_in_children();
28565 #endif // !NMODL_AST_GLOBAL_HPP 28566 #ifndef NMODL_AST_POINTER_HPP 28567 #define NMODL_AST_POINTER_HPP 28597 virtual ~
Pointer() =
default;
28666 return std::static_pointer_cast<
Pointer>(shared_from_this());
28673 return std::static_pointer_cast<
const Pointer>(shared_from_this());
28702 token = std::make_shared<ModToken>(tok);
28756 void set_parent_in_children();
28763 #endif // !NMODL_AST_POINTER_HPP 28764 #ifndef NMODL_AST_BBCORE_POINTER_HPP 28765 #define NMODL_AST_BBCORE_POINTER_HPP 28854 return "BbcorePointer";
28869 return "BBCOREPOINTER ";
28876 return std::static_pointer_cast<
BbcorePointer>(shared_from_this());
28883 return std::static_pointer_cast<
const BbcorePointer>(shared_from_this());
28914 token = std::make_shared<ModToken>(tok);
28969 void set_parent_in_children();
28976 #endif // !NMODL_AST_BBCORE_POINTER_HPP 28977 #ifndef NMODL_AST_EXTERNAL_HPP 28978 #define NMODL_AST_EXTERNAL_HPP 29079 return std::static_pointer_cast<
External>(shared_from_this());
29086 return std::static_pointer_cast<
const External>(shared_from_this());
29115 token = std::make_shared<ModToken>(tok);
29170 void set_parent_in_children();
29177 #endif // !NMODL_AST_EXTERNAL_HPP 29178 #ifndef NMODL_AST_THREAD_SAFE_HPP 29179 #define NMODL_AST_THREAD_SAFE_HPP 29260 return "ThreadSafe";
29280 return std::static_pointer_cast<
ThreadSafe>(shared_from_this());
29287 return std::static_pointer_cast<
const ThreadSafe>(shared_from_this());
29318 token = std::make_shared<ModToken>(tok);
29373 void set_parent_in_children();
29380 #endif // !NMODL_AST_THREAD_SAFE_HPP 29381 #ifndef NMODL_AST_VERBATIM_HPP 29382 #define NMODL_AST_VERBATIM_HPP 29410 explicit Verbatim(
const std::shared_ptr<String> &statement);
29484 return std::static_pointer_cast<
Verbatim>(shared_from_this());
29491 return std::static_pointer_cast<
const Verbatim>(shared_from_this());
29522 token = std::make_shared<ModToken>(tok);
29529 void set_statement(std::shared_ptr<String> &&statement);
29534 void set_statement(
const std::shared_ptr<String> &statement);
29577 void set_parent_in_children();
29584 #endif // !NMODL_AST_VERBATIM_HPP 29585 #ifndef NMODL_AST_LINE_COMMENT_HPP 29586 #define NMODL_AST_LINE_COMMENT_HPP 29614 explicit LineComment(
const std::shared_ptr<String> &statement);
29668 return "LineComment";
29675 return std::static_pointer_cast<
LineComment>(shared_from_this());
29682 return std::static_pointer_cast<
const LineComment>(shared_from_this());
29713 token = std::make_shared<ModToken>(tok);
29720 void set_statement(std::shared_ptr<String> &&statement);
29725 void set_statement(
const std::shared_ptr<String> &statement);
29768 void set_parent_in_children();
29775 #endif // !NMODL_AST_LINE_COMMENT_HPP 29776 #ifndef NMODL_AST_BLOCK_COMMENT_HPP 29777 #define NMODL_AST_BLOCK_COMMENT_HPP 29805 explicit BlockComment(
const std::shared_ptr<String> &statement);
29859 return "BlockComment";
29879 return std::static_pointer_cast<
BlockComment>(shared_from_this());
29886 return std::static_pointer_cast<
const BlockComment>(shared_from_this());
29917 token = std::make_shared<ModToken>(tok);
29924 void set_statement(std::shared_ptr<String> &&statement);
29929 void set_statement(
const std::shared_ptr<String> &statement);
29972 void set_parent_in_children();
29979 #endif // !NMODL_AST_BLOCK_COMMENT_HPP 29980 #ifndef NMODL_AST_ONTOLOGY_STATEMENT_HPP 29981 #define NMODL_AST_ONTOLOGY_STATEMENT_HPP 30065 return "OntologyStatement";
30093 shared_from_this());
30112 return ontology_id;
30124 token = std::make_shared<ModToken>(tok);
30131 void set_ontology_id(std::shared_ptr<String> &&ontology_id);
30136 void set_ontology_id(
const std::shared_ptr<String> &ontology_id);
30179 void set_parent_in_children();
30186 #endif // !NMODL_AST_ONTOLOGY_STATEMENT_HPP 30187 #ifndef NMODL_AST_PROGRAM_HPP 30188 #define NMODL_AST_PROGRAM_HPP 30224 virtual ~
Program() =
default;
30280 return std::static_pointer_cast<
Program>(shared_from_this());
30287 return std::static_pointer_cast<
const Program>(shared_from_this());
30324 blocks.emplace_back(n);
30334 blocks.emplace_back(n);
30336 n->set_parent(
this);
30342 NodeVector::const_iterator
erase_node(NodeVector::const_iterator first) {
30344 return blocks.erase(first_it);
30349 NodeVector::const_iterator
erase_node(NodeVector::const_iterator first,
30350 NodeVector::const_iterator last) {
30353 return blocks.erase(first_it, last_it);
30361 auto first = blocks.begin();
30362 auto last = blocks.end();
30363 auto result = first;
30365 while (first != last) {
30368 if (to_be_erased.erase(first->get()) == 0) {
30369 reset_node(result, *first);
30375 size_t out = last - result;
30376 erase_node(result, last);
30384 NodeVector::const_iterator
insert_node(NodeVector::const_iterator position,
30385 const std::shared_ptr<Node> &n) {
30386 n->set_parent(
this);
30388 return blocks.insert(pos_it, n);
30393 template <
class NodeType,
class InputIterator>
30395 InputIterator first, InputIterator last) {
30397 for (
auto it = first; it != last; ++it) {
30400 n->set_parent(
this);
30405 blocks.insert(pos_it, first_it, last_it);
30415 blocks[position - blocks.begin()].reset(n);
30422 std::shared_ptr<Node> n) {
30424 n->set_parent(
this);
30426 blocks[position - blocks.begin()] = n;
30443 token = std::make_shared<ModToken>(tok);
30456 symtab = newsymtab;
30510 void set_parent_in_children();
30517 #endif // !NMODL_AST_PROGRAM_HPP 30518 #ifndef NMODL_AST_NRN_STATE_BLOCK_HPP 30519 #define NMODL_AST_NRN_STATE_BLOCK_HPP 30602 return "NrnStateBlock";
30622 return std::static_pointer_cast<
NrnStateBlock>(shared_from_this());
30629 return std::static_pointer_cast<
const NrnStateBlock>(shared_from_this());
30661 return solve_statements;
30673 token = std::make_shared<ModToken>(tok);
30686 symtab = newsymtab;
30741 void set_parent_in_children();
30748 #endif // !NMODL_AST_NRN_STATE_BLOCK_HPP 30749 #ifndef NMODL_AST_EIGEN_NEWTON_SOLVER_BLOCK_HPP 30750 #define NMODL_AST_EIGEN_NEWTON_SOLVER_BLOCK_HPP 30799 const std::shared_ptr<Integer> &n_state_vars,
30800 const std::shared_ptr<StatementBlock> &variable_block,
30801 const std::shared_ptr<StatementBlock> &initialize_block,
30802 const std::shared_ptr<StatementBlock> &setup_x_block,
30803 const std::shared_ptr<StatementBlock> &functor_block,
30804 const std::shared_ptr<StatementBlock> &update_states_block,
30805 const std::shared_ptr<StatementBlock> &finalize_block);
30861 return "EigenNewtonSolverBlock";
30876 return "EIGEN_NEWTON_SOLVE";
30891 shared_from_this());
30923 return n_state_vars;
30931 return variable_block;
30939 return initialize_block;
30946 return setup_x_block;
30953 return functor_block;
30962 return update_states_block;
30970 return finalize_block;
30982 token = std::make_shared<ModToken>(tok);
30995 symtab = newsymtab;
31002 void set_n_state_vars(std::shared_ptr<Integer> &&n_state_vars);
31007 void set_n_state_vars(
const std::shared_ptr<Integer> &n_state_vars);
31013 void set_variable_block(std::shared_ptr<StatementBlock> &&variable_block);
31020 set_variable_block(
const std::shared_ptr<StatementBlock> &variable_block);
31026 void set_initialize_block(std::shared_ptr<StatementBlock> &&initialize_block);
31033 set_initialize_block(
const std::shared_ptr<StatementBlock> &initialize_block);
31039 void set_setup_x_block(std::shared_ptr<StatementBlock> &&setup_x_block);
31044 void set_setup_x_block(
const std::shared_ptr<StatementBlock> &setup_x_block);
31050 void set_functor_block(std::shared_ptr<StatementBlock> &&functor_block);
31055 void set_functor_block(
const std::shared_ptr<StatementBlock> &functor_block);
31061 void set_update_states_block(
31062 std::shared_ptr<StatementBlock> &&update_states_block);
31068 void set_update_states_block(
31069 const std::shared_ptr<StatementBlock> &update_states_block);
31075 void set_finalize_block(std::shared_ptr<StatementBlock> &&finalize_block);
31082 set_finalize_block(
const std::shared_ptr<StatementBlock> &finalize_block);
31125 void set_parent_in_children();
31132 #endif // !NMODL_AST_EIGEN_NEWTON_SOLVER_BLOCK_HPP 31133 #ifndef NMODL_AST_EIGEN_LINEAR_SOLVER_BLOCK_HPP 31134 #define NMODL_AST_EIGEN_LINEAR_SOLVER_BLOCK_HPP 31180 const std::shared_ptr<Integer> &n_state_vars,
31181 const std::shared_ptr<StatementBlock> &variable_block,
31182 const std::shared_ptr<StatementBlock> &initialize_block,
31183 const std::shared_ptr<StatementBlock> &setup_x_block,
31184 const std::shared_ptr<StatementBlock> &update_states_block,
31185 const std::shared_ptr<StatementBlock> &finalize_block);
31241 return "EigenLinearSolverBlock";
31256 return "EIGEN_LINEAR_SOLVE";
31271 shared_from_this());
31303 return n_state_vars;
31311 return variable_block;
31319 return initialize_block;
31326 return setup_x_block;
31335 return update_states_block;
31343 return finalize_block;
31355 token = std::make_shared<ModToken>(tok);
31368 symtab = newsymtab;
31375 void set_n_state_vars(std::shared_ptr<Integer> &&n_state_vars);
31380 void set_n_state_vars(
const std::shared_ptr<Integer> &n_state_vars);
31386 void set_variable_block(std::shared_ptr<StatementBlock> &&variable_block);
31393 set_variable_block(
const std::shared_ptr<StatementBlock> &variable_block);
31399 void set_initialize_block(std::shared_ptr<StatementBlock> &&initialize_block);
31406 set_initialize_block(
const std::shared_ptr<StatementBlock> &initialize_block);
31412 void set_setup_x_block(std::shared_ptr<StatementBlock> &&setup_x_block);
31417 void set_setup_x_block(
const std::shared_ptr<StatementBlock> &setup_x_block);
31423 void set_update_states_block(
31424 std::shared_ptr<StatementBlock> &&update_states_block);
31430 void set_update_states_block(
31431 const std::shared_ptr<StatementBlock> &update_states_block);
31437 void set_finalize_block(std::shared_ptr<StatementBlock> &&finalize_block);
31444 set_finalize_block(
const std::shared_ptr<StatementBlock> &finalize_block);
31487 void set_parent_in_children();
31494 #endif // !NMODL_AST_EIGEN_LINEAR_SOLVER_BLOCK_HPP 31495 #ifndef NMODL_AST_WRAPPED_EXPRESSION_HPP 31496 #define NMODL_AST_WRAPPED_EXPRESSION_HPP 31580 return "WrappedExpression";
31595 shared_from_this());
31626 token = std::make_shared<ModToken>(tok);
31633 void set_expression(std::shared_ptr<Expression> &&expression);
31638 void set_expression(
const std::shared_ptr<Expression> &expression);
31681 void set_parent_in_children();
31688 #endif // !NMODL_AST_WRAPPED_EXPRESSION_HPP 31689 #ifndef NMODL_AST_DERIVIMPLICIT_CALLBACK_HPP 31690 #define NMODL_AST_DERIVIMPLICIT_CALLBACK_HPP 31774 return "DerivimplicitCallback";
31789 shared_from_this());
31808 return node_to_solve;
31820 token = std::make_shared<ModToken>(tok);
31827 void set_node_to_solve(std::shared_ptr<Block> &&node_to_solve);
31832 void set_node_to_solve(
const std::shared_ptr<Block> &node_to_solve);
31875 void set_parent_in_children();
31882 #endif // !NMODL_AST_DERIVIMPLICIT_CALLBACK_HPP 31883 #ifndef NMODL_AST_SOLUTION_EXPRESSION_HPP 31884 #define NMODL_AST_SOLUTION_EXPRESSION_HPP 31916 const std::shared_ptr<Expression> &node_to_solve);
31972 return "SolutionExpression";
31987 shared_from_this());
32006 return solve_block;
32013 return node_to_solve;
32025 token = std::make_shared<ModToken>(tok);
32032 void set_solve_block(std::shared_ptr<SolveBlock> &&solve_block);
32037 void set_solve_block(
const std::shared_ptr<SolveBlock> &solve_block);
32043 void set_node_to_solve(std::shared_ptr<Expression> &&node_to_solve);
32048 void set_node_to_solve(
const std::shared_ptr<Expression> &node_to_solve);
32091 void set_parent_in_children();
32098 #endif // !NMODL_AST_SOLUTION_EXPRESSION_HPP std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
type of ast::DiscreteBlock
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
std::vector< std::shared_ptr< ExternVar > > ExternVarVector
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< StatementBlock > ifsolerr
Block to be executed on error.
static const std::string ReactionOpNames[]
string representation of ast::ReactionOp
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< Name > steadystate
Name of the integration method.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< Expression > length
legth of an array or index position
const std::shared_ptr< Integer > & get_with() const noexcept
Getter for member variable TableStatement::with.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
ThreadsafeVar * clone() const override
Return a copy of the current node.
virtual AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< StatementBlock > statement_block
TODO.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
type of ast::ConductanceHint
bool is_lag_statement() const noexcept override
Check if the ast node is an instance of ast::LagStatement.
bool is_constant_statement() const noexcept override
Check if the ast node is an instance of ast::ConstantStatement.
const NameVector & get_solvefor() const noexcept
Getter for member variable LinearBlock::solvefor.
GlobalVarVector::const_iterator insert_global_var(GlobalVarVector::const_iterator position, const std::shared_ptr< GlobalVar > &n)
Insert member to variables.
LocalListStatement * clone() const override
Return a copy of the current node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
Represents SECTION variables statement in NMODL.
type of ast::WrappedExpression
type of ast::NrnStateBlock
void set_token(const ModToken &tok)
Set token for the current ast node.
const std::shared_ptr< Expression > & get_value() const noexcept
Getter for member variable Watch::value.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::shared_ptr< Name > name
Name of the discrete block.
static const std::string BATypeNames[]
string representation of ast::BAType
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::shared_ptr< ModToken > token
token with location information
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
const std::shared_ptr< StatementBlock > & get_setup_x_block() const noexcept
Getter for member variable EigenLinearSolverBlock::setup_x_block.
bool is_unary_operator() const noexcept override
Check if the ast node is an instance of ast::UnaryOperator.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< Unit > unit
TODO.
std::shared_ptr< ModToken > token
token with location information
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
symtab::SymbolTable * get_symbol_table() const override
Return associated symbol table for the current ast node.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
const std::shared_ptr< Identifier > & get_name() const noexcept
Getter for member variable Match::name.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
const std::shared_ptr< Name > & get_name2() const noexcept
Getter for member variable PartialBoundary::name2.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
bool is_non_linear_block() const noexcept override
Check if the ast node is an instance of ast::NonLinearBlock.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
bool is_reaction_operator() const noexcept override
Check if the ast node is an instance of ast::ReactionOperator.
const SteppedVector & get_statements() const noexcept
Getter for member variable StepBlock::statements.
const std::shared_ptr< StatementBlock > & get_finalize_block() const noexcept
Getter for member variable EigenLinearSolverBlock::finalize_block.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
Double * clone() const override
Return a copy of the current node.
virtual Block * clone() const override
Return a copy of the current node.
virtual AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< ModToken > token
token with location information
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
type of ast::FunctionCall
const std::shared_ptr< Name > & get_name() const noexcept
Getter for member variable DiscreteBlock::name.
type of ast::EigenLinearSolverBlock
AstNodeType
Enum type for every AST node type.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
UnaryOp
enum type for unary operators
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
virtual void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
std::shared_ptr< SolveBlock > solve_block
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
Limits * clone() const override
Return a copy of the current node.
ExpressionStatement * clone() const override
Return a copy of the current node.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::shared_ptr< Name > name
Name of the non-linear block.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
bool is_param_assign() const noexcept override
Check if the ast node is an instance of ast::ParamAssign.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
Compartment * clone() const override
Return a copy of the current node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Name > name
Name of the linear block.
const NonspecificCurVarVector & get_currents() const noexcept
Getter for member variable Nonspecific::currents.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< ModToken > token
token with location information
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< Unit > unit
Unit if specified.
size_t erase_local_var(std::unordered_set< LocalVar *> &to_be_erased)
Erase non-consecutive members to variables.
Represent token returned by scanner.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
Range * clone() const override
Return a copy of the current node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
float eval() const
Return value of the ast node.
bool is_neuron_block() const noexcept override
Check if the ast node is an instance of ast::NeuronBlock.
const std::shared_ptr< StatementBlock > & get_finalize_block() const noexcept
Getter for member variable EigenNewtonSolverBlock::finalize_block.
Represents a LAG statement in the mod file.
Base class for all Abstract Syntax Tree node types.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
std::shared_ptr< Integer > with
an increment factor
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
std::shared_ptr< ModToken > token
token with location information
bool is_watch() const noexcept override
Check if the ast node is an instance of ast::Watch.
const std::shared_ptr< Unit > & get_unit2() const noexcept
Getter for member variable FactorDef::unit2.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
void set_token(const ModToken &tok)
Set token for the current ast node.
const std::shared_ptr< Unit > & get_unit() const noexcept
Getter for member variable ParamAssign::unit.
StatementVector::const_iterator erase_statement(StatementVector::const_iterator first)
Erase member to statements.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< ModToken > token
token with location information
const std::shared_ptr< StatementBlock > & get_statement_block() const noexcept override
Getter for member variable IfStatement::statement_block.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
Represents LINEAR block in the NMODL.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
DerivimplicitCallback * clone() const override
Return a copy of the current node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
Represents SUFFIX statement in NMODL.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
void set_symbol_table(symtab::SymbolTable *newsymtab) override
Set symbol table for the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
PartialEquation * clone() const override
Return a copy of the current node.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< ModToken > token
token with location information
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
static const std::string BinaryOpNames[]
string representation of ast::BinaryOp
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::vector< std::shared_ptr< ThreadsafeVar > > ThreadsafeVarVector
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
DerivativeBlock * clone() const override
Return a copy of the current node.
const ElectrodeCurVarVector & get_currents() const noexcept
Getter for member variable ElctrodeCurrent::currents.
std::shared_ptr< ModToken > token
token with location information
void set_token(const ModToken &tok)
Set token for the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
bool is_ba_block() const noexcept override
Check if the ast node is an instance of ast::BABlock.
std::vector< std::shared_ptr< PointerVar > > PointerVarVector
const ArgumentVector & get_parameters() const noexcept override
Getter for member variable ForNetcon::parameters.
type of ast::ForAllStatement
const std::shared_ptr< Expression > & get_length() const noexcept
Getter for member variable IndexedName::length.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
const std::shared_ptr< Name > & get_name() const noexcept
Getter for member variable FactorDef::name.
std::shared_ptr< Expression > increment
TODO.
Represents TABLE statement in NMODL.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
const std::shared_ptr< Expression > & get_condition() const noexcept
Getter for member variable ElseIfStatement::condition.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
const ParamAssignVector & get_statements() const noexcept
Getter for member variable ParamBlock::statements.
std::shared_ptr< StatementBlock > statement_block
TODO.
bool is_partial_equation() const noexcept override
Check if the ast node is an instance of ast::PartialEquation.
Represent a callback to NEURON's derivimplicit solver.
std::shared_ptr< ModToken > token
token with location information
Represent queue statement in NMODL.
void reset_statement(StatementVector::const_iterator position, std::shared_ptr< Statement > n)
Reset member to statements.
bool is_for_netcon() const noexcept override
Check if the ast node is an instance of ast::ForNetcon.
std::shared_ptr< Expression > lhs
TODO.
void set_token(const ModToken &tok)
Set token for the current ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
bool is_react_var_name() const noexcept override
Check if the ast node is an instance of ast::ReactVarName.
const std::shared_ptr< Name > & get_type() const noexcept
Getter for member variable Suffix::type.
const ArgumentVector & get_parameters() const noexcept override
Getter for member variable FunctionTableBlock::parameters.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
NonLinEquation * clone() const override
Return a copy of the current node.
virtual std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
NodeVector blocks
Vector of top level blocks in the mod file.
std::shared_ptr< ModToken > token
token with location information
const std::shared_ptr< Number > & get_from() const noexcept
Getter for member variable AssignedDefinition::from.
std::shared_ptr< ModToken > token
token with location information
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
double value
Value of double.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Integer > value
Value of the macro.
std::shared_ptr< String > value
Value of name.
type of ast::PartialBlock
Float * clone() const override
Return a copy of the current node.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
std::shared_ptr< Identifier > name
TODO.
type of ast::BreakpointBlock
void set_token(const ModToken &tok)
Set token for the current ast node.
virtual std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< Expression > expression
TODO.
std::shared_ptr< Expression > expression
TODO.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< StatementBlock > statement_block
Block with statements vector.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
std::shared_ptr< ModToken > token
token with location information
const ElseIfStatementVector & get_elseifs() const noexcept
Getter for member variable IfStatement::elseifs.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::shared_ptr< StatementBlock > initialize_block
Statement block to be executed before calling newton solver.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< StatementBlock > statement_block
Block with statements vector.
symtab::SymbolTable * get_symbol_table() const override
Return associated symbol table for the current ast node.
void set_symbol_table(symtab::SymbolTable *newsymtab) override
Set symbol table for the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
bool is_match_block() const noexcept override
Check if the ast node is an instance of ast::MatchBlock.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
const std::shared_ptr< Name > & get_type() const noexcept
Getter for member variable Valence::type.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
type of ast::ExpressionStatement
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
const std::shared_ptr< StatementBlock > & get_functor_block() const noexcept
Getter for member variable EigenNewtonSolverBlock::functor_block.
const std::shared_ptr< StatementBlock > & get_ifsolerr() const noexcept
Getter for member variable SolveBlock::ifsolerr.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< ModToken > token
token with location information
void set_token(const ModToken &tok)
Set token for the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
bool is_queue_expression_type() const noexcept override
Check if the ast node is an instance of ast::QueueExpressionType.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
void set_symbol_table(symtab::SymbolTable *newsymtab) override
Set symbol table for the current ast node.
WatchStatement * clone() const override
Return a copy of the current node.
bool is_lin_equation() const noexcept override
Check if the ast node is an instance of ast::LinEquation.
type of ast::IndependentBlock
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
External * clone() const override
Return a copy of the current node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< ModToken > token
token with location information
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
type of ast::LocalListStatement
type of ast::ReactionStatement
const std::shared_ptr< StatementBlock > & get_statement_block() const noexcept override
Getter for member variable DerivativeBlock::statement_block.
void set_symbol_table(symtab::SymbolTable *newsymtab) override
Set symbol table for the current ast node.
type of ast::ElseIfStatement
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< Expression > left_linxpression
TODO.
void negate() override
Negate the value of current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
Represents ELECTRODE_CURRENT variables statement in NMODL.
ConstructorBlock * clone() const override
Return a copy of the current node.
const std::shared_ptr< StatementBlock > & get_statement_block() const noexcept override
Getter for member variable ConstructorBlock::statement_block.
const std::shared_ptr< Identifier > & get_name() const noexcept
Getter for member variable PlotVar::name.
virtual std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
symtab::SymbolTable * get_symbol_table() const override
Return associated symbol table for the current ast node.
Represents specific element of an array variable.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< String > value
Name of prime variable.
QueueStatement * clone() const override
Return a copy of the current node.
std::shared_ptr< Integer > value
TODO.
NonspecificCurVar * clone() const override
Return a copy of the current node.
std::shared_ptr< Integer > n_state_vars
number of state vars used in solve
bool is_before_block() const noexcept override
Check if the ast node is an instance of ast::BeforeBlock.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
bool is_partial_block() const noexcept override
Check if the ast node is an instance of ast::PartialBlock.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
void set_symbol_table(symtab::SymbolTable *newsymtab) override
Set symbol table for the current ast node.
bool is_number() const noexcept override
Check if the ast node is an instance of ast::Number.
symtab::SymbolTable * get_symbol_table() const override
Return associated symbol table for the current ast node.
const std::shared_ptr< StatementBlock > & get_variable_block() const noexcept
Getter for member variable EigenLinearSolverBlock::variable_block.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
const std::shared_ptr< StatementBlock > & get_statement_block() const noexcept override
Getter for member variable NeuronBlock::statement_block.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
const ArgumentVector & get_parameters() const noexcept override
Getter for member variable FunctionBlock::parameters.
virtual AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
bool is_derivimplicit_callback() const noexcept override
Check if the ast node is an instance of ast::DerivimplicitCallback.
symtab::SymbolTable * get_symbol_table() const override
Return associated symbol table for the current ast node.
symtab::SymbolTable * get_symbol_table() const override
Return associated symbol table for the current ast node.
std::shared_ptr< StatementBlock > statement_block
Block with statements vector.
bool is_else_if_statement() const noexcept override
Check if the ast node is an instance of ast::ElseIfStatement.
std::shared_ptr< ModToken > token
token with location information
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
LocalVar * clone() const override
Return a copy of the current node.
ElectrodeCurVar * clone() const override
Return a copy of the current node.
Represents a BREAKPOINT block in NMODL.
BAType get_value() const noexcept
Getter for member variable BABlockType::value.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::shared_ptr< QueueExpressionType > qtype
queue type (put/get)
symtab::SymbolTable * get_symbol_table() const override
Return associated symbol table for the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
type of ast::UnaryOperator
bool is_non_lin_equation() const noexcept override
Check if the ast node is an instance of ast::NonLinEquation.
virtual const ArgumentVector & get_parameters() const
Match * clone() const override
Return a copy of the current node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::shared_ptr< Expression > condition
TODO.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
Represents a block to be executed before or after another block.
std::shared_ptr< ConstantVar > constant
single constant variable
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
GlobalVarVector::const_iterator erase_global_var(GlobalVarVector::const_iterator first)
Erase member to variables.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
void set_symbol_table(symtab::SymbolTable *newsymtab) override
Set symbol table for the current ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
const std::shared_ptr< Name > & get_name() const noexcept
Getter for member variable ConstantVar::name.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Name > name
Variable name.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
ArgumentVector parameters
Vector of the parameters.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
const std::shared_ptr< PlotDeclaration > & get_plot() const noexcept
Getter for member variable PlotBlock::plot.
std::string value
Value of string.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
std::shared_ptr< StatementBlock > update_states_block
update back states from X
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Name > name
TODO.
void set_symbol_table(symtab::SymbolTable *newsymtab) override
Set symbol table for the current ast node.
const std::shared_ptr< StatementBlock > & get_statement_block() const noexcept override
Getter for member variable FunctionBlock::statement_block.
const ThreadsafeVarVector & get_variables() const noexcept
Getter for member variable ThreadSafe::variables.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
const std::shared_ptr< Expression > & get_to() const noexcept
Getter for member variable FromStatement::to.
std::shared_ptr< StatementBlock > setup_x_block
update X from states
VarName * clone() const override
Return a copy of the current node.
Represent CONSERVE statement in NMODL.
const StatementVector & get_solve_statements() const noexcept
Getter for member variable NrnStateBlock::solve_statements.
void set_token(const ModToken &tok)
Set token for the current ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
bool is_double() const noexcept override
Check if the ast node is an instance of ast::Double.
LocalVarVector::const_iterator erase_local_var(LocalVarVector::const_iterator first)
Erase member to variables.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Name > name1
TODO.
void set_token(const ModToken &tok)
Set token for the current ast node.
const std::shared_ptr< Name > & get_name() const noexcept
Getter for member variable WriteIonVar::name.
const std::shared_ptr< Name > & get_name() const noexcept
Getter for member variable BbcorePointerVar::name.
ConductanceHint * clone() const override
Return a copy of the current node.
BreakpointBlock * clone() const override
Return a copy of the current node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
Base class for all expressions in the NMODL.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
const std::shared_ptr< Number > & get_value() const noexcept
Getter for member variable ParamAssign::value.
void set_symbol_table(symtab::SymbolTable *newsymtab) override
Set symbol table for the current ast node.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
const std::shared_ptr< StatementBlock > & get_statement_block() const noexcept override
Getter for member variable DestructorBlock::statement_block.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< Unit > unit
Unit for the variable.
bool is_while_statement() const noexcept override
Check if the ast node is an instance of ast::WhileStatement.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
void emplace_back_watch(std::shared_ptr< Watch > n)
Add member to statements by shared_ptr.
const SectionVarVector & get_sections() const noexcept
Getter for member variable Section::sections.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
bool is_pointer() const noexcept override
Check if the ast node is an instance of ast::Pointer.
std::shared_ptr< StatementBlock > statement_block
Block with statements vector.
Represent MUTEXLOCK statement in NMODL.
Represents binary expression in the NMODL.
void set_token(const ModToken &tok)
Set token for the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
virtual std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
const std::shared_ptr< String > & get_value() const noexcept
Getter for member variable Name::value.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
TableStatement * clone() const override
Return a copy of the current node.
bool is_double_unit() const noexcept override
Check if the ast node is an instance of ast::DoubleUnit.
Wrap any other expression type.
bool is_extern_var() const noexcept override
Check if the ast node is an instance of ast::ExternVar.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Name > name
Name of the macro.
std::shared_ptr< Identifier > name
TODO.
const std::shared_ptr< Unit > & get_unit() const noexcept
Getter for member variable IndependentDefinition::unit.
std::shared_ptr< ModToken > token
token with location information
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< ModToken > token
token with location information
void set_token(const ModToken &tok)
Set token for the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::shared_ptr< ModToken > token
token with location information
ReactionOp
enum type used for Reaction statement
std::vector< std::shared_ptr< Statement > > StatementVector
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
type of ast::ReactVarName
const std::shared_ptr< Double > & get_min() const noexcept
Getter for member variable Limits::min.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
double to_double() override
Return value of the current ast node as double.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
FirstLastType
enum type for partial equation types
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::string eval() const
Return enum value in string form.
LinearBlock * clone() const override
Return a copy of the current node.
std::shared_ptr< ModToken > token
token with location information
const std::shared_ptr< Name > & get_steadystate() const noexcept
Getter for member variable SolveBlock::steadystate.
Represents a C code block.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
const std::shared_ptr< String > & get_ontology_id() const noexcept
Getter for member variable Useion::ontology_id.
std::shared_ptr< ModToken > token
token with location information
virtual std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
void reset_statement(StatementVector::const_iterator position, Statement *n)
Reset member to statements.
EigenLinearSolverBlock * clone() const override
Return a copy of the current node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Number > from
TODO.
bool is_global() const noexcept override
Check if the ast node is an instance of ast::Global.
const std::shared_ptr< String > & get_filename() const noexcept
Getter for member variable Include::filename.
Operator used in ast::BinaryExpression.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
virtual std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::shared_ptr< Integer > order
order of ODE
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
Represent solution of a block in the AST.
std::shared_ptr< Expression > reaction1
TODO.
std::vector< std::shared_ptr< ParamAssign > > ParamAssignVector
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
const std::shared_ptr< Number > & get_value() const noexcept
Getter for member variable ConstantVar::value.
Represents POINTER statement in NMODL.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
type of ast::ConstantStatement
const std::shared_ptr< Name > & get_name() const noexcept
Getter for member variable Stepped::name.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
const std::shared_ptr< Integer > & get_with() const noexcept
Getter for member variable IndependentDefinition::with.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
const std::shared_ptr< Expression > & get_expr() const noexcept
Getter for member variable Conserve::expr.
UnaryOperator * clone() const override
Return a copy of the current node.
const std::shared_ptr< Double > & get_value() const noexcept
Getter for member variable Valence::value.
ReactionOperator * clone() const override
Return a copy of the current node.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
ReactionOp get_value() const noexcept
Getter for member variable ReactionOperator::value.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
const std::shared_ptr< String > & get_name() const noexcept
Getter for member variable Unit::name.
std::vector< std::shared_ptr< RangeVar > > RangeVarVector
const std::shared_ptr< Integer > & get_index() const noexcept
Getter for member variable PlotVar::index.
const std::shared_ptr< String > & get_title() const noexcept
Getter for member variable Model::title.
bool is_nrn_state_block() const noexcept override
Check if the ast node is an instance of ast::NrnStateBlock.
type of ast::ConstantBlock
const NameVector & get_depend_vars() const noexcept
Getter for member variable TableStatement::depend_vars.
ReadIonVarVector readlist
Variables being read.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
const std::shared_ptr< Integer > & get_length() const noexcept
Getter for member variable AssignedDefinition::length.
void set_token(const ModToken &tok)
Set token for the current ast node.
const std::shared_ptr< Name > & get_name() const noexcept
Getter for member variable Define::name.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
virtual std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
bool is_assigned_definition() const noexcept override
Check if the ast node is an instance of ast::AssignedDefinition.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
const std::shared_ptr< VarName > & get_name() const noexcept
Getter for member variable ReactVarName::name.
Define * clone() const override
Return a copy of the current node.
std::shared_ptr< Block > node_to_solve
Block to be solved (typically derivative)
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< Name > name
TODO.
Represents GLOBAL statement in NMODL.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
IndexedName * clone() const override
Return a copy of the current node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::vector< T >::iterator const_iter_cast(std::vector< T > &v, typename std::vector< T >::const_iterator iter)
Return non-const iterator corresponding to the const_iterator in a vector.
type of ast::ElseStatement
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
Represents a AFTER block in NMODL.
const std::shared_ptr< Identifier > & get_name() const noexcept
Getter for member variable AssignedDefinition::name.
std::shared_ptr< ModToken > token
token with location information
Represents a CONSTRUCTOR block in the NMODL.
const std::shared_ptr< Number > & get_to() const noexcept
Getter for member variable AssignedDefinition::to.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
const std::shared_ptr< StatementBlock > & get_statement_block() const noexcept override
Getter for member variable DiscreteBlock::statement_block.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< PlotDeclaration > plot
Vector of plot variables.
const std::shared_ptr< Expression > & get_expression() const noexcept
Getter for member variable ProtectStatement::expression.
Represent a single variable of type BBCOREPOINTER.
void set_symbol_table(symtab::SymbolTable *newsymtab) override
Set symbol table for the current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
bool is_destructor_block() const noexcept override
Check if the ast node is an instance of ast::DestructorBlock.
std::shared_ptr< Expression > expression
TODO.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
bool is_number_range() const noexcept override
Check if the ast node is an instance of ast::NumberRange.
std::vector< std::shared_ptr< Node > > NodeVector
const std::shared_ptr< Unit > & get_unit1() const noexcept
Getter for member variable UnitDef::unit1.
Represents a INITIAL block in the NMODL.
Include * clone() const override
Return a copy of the current node.
virtual AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
const std::shared_ptr< Expression > & get_expression() const noexcept
Getter for member variable ParenExpression::expression.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
symtab::SymbolTable * get_symbol_table() const override
Return associated symbol table for the current ast node.
std::shared_ptr< String > statement
C code as a string.
float get_value() const noexcept
Getter for member variable Float::value.
std::shared_ptr< Unit > unit
TODO.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
void negate() override
Negate the value of current ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Name > name
Name of the derivative block.
std::shared_ptr< Expression > react
TODO.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
const std::shared_ptr< Unit > & get_unit() const noexcept
Getter for member variable Argument::unit.
void set_token(const ModToken &tok)
Set token for the current ast node.
const VarNameVector & get_variables() const noexcept
Getter for member variable Sens::variables.
const std::shared_ptr< StatementBlock > & get_update_states_block() const noexcept
Getter for member variable EigenNewtonSolverBlock::update_states_block.
const RangeVarVector & get_variables() const noexcept
Getter for member variable Range::variables.
void set_token(const ModToken &tok)
Set token for the current ast node.
bool is_limits() const noexcept override
Check if the ast node is an instance of ast::Limits.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
const std::shared_ptr< StatementBlock > & get_update_states_block() const noexcept
Getter for member variable EigenLinearSolverBlock::update_states_block.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::shared_ptr< ModToken > token
token with location information
const std::shared_ptr< Name > & get_name() const noexcept
Getter for member variable KineticBlock::name.
const std::shared_ptr< StatementBlock > & get_statement_block() const noexcept override
Getter for member variable ElseStatement::statement_block.
Boolean * clone() const override
Return a copy of the current node.
symtab::ModelSymbolTable * get_model_symbol_table()
Return global symbol table for the mod file.
std::shared_ptr< Unit > unit
TODO.
bool is_reset() const noexcept override
Check if the ast node is an instance of ast::Reset.
const std::shared_ptr< Name > & get_name1() const noexcept
Getter for member variable PartialEquation::name1.
std::shared_ptr< ModToken > token
token with location information
const std::shared_ptr< Integer > & get_value() const noexcept
Getter for member variable ReactVarName::value.
std::shared_ptr< Name > name
TODO.
bool is_block() const noexcept override
Check if the ast node is an instance of ast::Block.
std::shared_ptr< ModToken > token
token with location information
const std::shared_ptr< Integer > & get_n_state_vars() const noexcept
Getter for member variable EigenLinearSolverBlock::n_state_vars.
Represent statement in CONSTANT block of NMODL.
std::shared_ptr< Double > max
TODO.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
type of ast::NonLinearBlock
const std::shared_ptr< Expression > & get_condition() const noexcept
Getter for member variable IfStatement::condition.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::shared_ptr< Name > name
TODO.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::shared_ptr< ModToken > token
token with location information
void set_symbol_table(symtab::SymbolTable *newsymtab) override
Set symbol table for the current ast node.
bool is_partial_boundary() const noexcept override
Check if the ast node is an instance of ast::PartialBoundary.
Represents top level AST node for whole NMODL input.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
bool is_queue_statement() const noexcept override
Check if the ast node is an instance of ast::QueueStatement.
void emplace_back_node(Node *n)
Add member to blocks by raw pointer.
AssignedDefinition * clone() const override
Return a copy of the current node.
NonLinearBlock * clone() const override
Return a copy of the current node.
OntologyStatement * clone() const override
Return a copy of the current node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
symtab::SymbolTable * get_symbol_table() const override
Return associated symbol table for the current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
IfStatement * clone() const override
Return a copy of the current node.
std::shared_ptr< StatementBlock > statement_block
Block with statements vector.
void reset_local_var(LocalVarVector::const_iterator position, std::shared_ptr< LocalVar > n)
Reset member to variables.
FunctionCall * clone() const override
Return a copy of the current node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::shared_ptr< StatementBlock > statement_block
Block with statements vector.
std::shared_ptr< Expression > from
TODO.
void set_token(const ModToken &tok)
Set token for the current ast node.
const std::shared_ptr< Expression > & get_reaction2() const noexcept
Getter for member variable ReactionStatement::reaction2.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
bool is_name() const noexcept override
Check if the ast node is an instance of ast::Name.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
Represents a STEPPED block in the NMODL.
const std::shared_ptr< Name > & get_ion() const noexcept
Getter for member variable ConductanceHint::ion.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
String * clone() const override
Return a copy of the current node.
Valence * clone() const override
Return a copy of the current node.
Pointer * clone() const override
Return a copy of the current node.
std::shared_ptr< Expression > to
TODO.
bool is_global_var() const noexcept override
Check if the ast node is an instance of ast::GlobalVar.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< Expression > expression
TODO.
void set_token(const ModToken &tok)
Set token for the current ast node.
const std::shared_ptr< Boolean > & get_gt() const noexcept
Getter for member variable FactorDef::gt.
PlotVarVector variables
TODO.
void set_symbol_table(symtab::SymbolTable *newsymtab) override
Set symbol table for the current ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
ConstantBlock * clone() const override
Return a copy of the current node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Number > from
TODO.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
symtab::SymbolTable * get_symbol_table() const override
Return associated symbol table for the current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
std::shared_ptr< StatementBlock > functor_block
odes as functor for eigen
NameVector table_vars
Variables in the table.
ReadIonVar * clone() const override
Return a copy of the current node.
std::shared_ptr< Name > name
TODO.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
AssignedDefinitionVector definitions
Vector of state variables.
const std::shared_ptr< Name > & get_name() const noexcept
Getter for member variable NonspecificCurVar::name.
LinEquation * clone() const override
Return a copy of the current node.
BinaryExpression * clone() const override
Return a copy of the current node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
bool is_binary_operator() const noexcept override
Check if the ast node is an instance of ast::BinaryOperator.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
std::shared_ptr< Integer > at
Value specified with @
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
const std::shared_ptr< Name > & get_name() const noexcept
Getter for member variable ReadIonVar::name.
LocalVarVector::const_iterator insert_local_var(LocalVarVector::const_iterator position, const std::shared_ptr< LocalVar > &n)
Insert member to variables.
const std::shared_ptr< Name > & get_name3() const noexcept
Getter for member variable PartialEquation::name3.
virtual Identifier * clone() const override
Return a copy of the current node.
ArgumentVector parameters
Vector of the parameters.
symtab::SymbolTable * get_symbol_table() const override
Return associated symbol table for the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
FunctionTableBlock * clone() const override
Return a copy of the current node.
const std::shared_ptr< Identifier > & get_name() const noexcept
Getter for member variable LagStatement::name.
WatchVector statements
Vector of watch statements.
symtab::SymbolTable * get_symbol_table() const override
Return associated symbol table for the current ast node.
Represent CONSTANT block in the mod file.
std::shared_ptr< ModToken > token
token with location information
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::vector< std::shared_ptr< Number > > NumberVector
bool is_useion() const noexcept override
Check if the ast node is an instance of ast::Useion.
void set_token(const ModToken &tok)
Set token for the current ast node.
Represents a ASSIGNED block in the NMODL.
const std::shared_ptr< Name > & get_conductance() const noexcept
Getter for member variable ConductanceHint::conductance.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
Represents RANGE variables statement in NMODL.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
const std::shared_ptr< Name > & get_block_name() const noexcept
Getter for member variable SolveBlock::block_name.
symtab::SymbolTable * get_symbol_table() const override
Return associated symbol table for the current ast node.
const std::shared_ptr< Unit > & get_unit() const noexcept
Getter for member variable DoubleUnit::unit.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
BABlock * clone() const override
Return a copy of the current node.
type of ast::PartialBoundary
GlobalVarVector::const_iterator erase_global_var(GlobalVarVector::const_iterator first, GlobalVarVector::const_iterator last)
Erase members to variables.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
bool is_kinetic_block() const noexcept override
Check if the ast node is an instance of ast::KineticBlock.
virtual std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
const GlobalVarVector & get_variables() const noexcept
Getter for member variable Global::variables.
type of ast::ProtectStatement
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
bool is_identifier() const noexcept override
Check if the ast node is an instance of ast::Identifier.
Represents a BEFORE block in NMODL.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
Represent symbol table for a NMODL block.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< StatementBlock > variable_block
Statements to be declared in the functor.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
const std::shared_ptr< Expression > & get_expression() const noexcept
Getter for member variable UnaryExpression::expression.
encapsulates everything related to NMODL code generation framework
const std::shared_ptr< Integer > & get_n_state_vars() const noexcept
Getter for member variable EigenNewtonSolverBlock::n_state_vars.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
const std::shared_ptr< Name > & get_name() const noexcept
Getter for member variable FunctionCall::name.
std::shared_ptr< ModToken > token
token with location information
ThreadsafeVarVector variables
Vector of thread safe variables.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Expression > condition
TODO.
bool is_initial_block() const noexcept override
Check if the ast node is an instance of ast::InitialBlock.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< Name > name
Name of the channel.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
std::shared_ptr< PrimeName > prime
TODO.
const UnaryOperator & get_op() const noexcept
Getter for member variable UnaryExpression::op.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::vector< std::shared_ptr< ElseIfStatement > > ElseIfStatementVector
const std::shared_ptr< Name > & get_name() const noexcept
Getter for member variable NonLinearBlock::name.
std::shared_ptr< Name > name
TODO.
std::shared_ptr< Expression > expression
TODO.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
ElseStatement * clone() const override
Return a copy of the current node.
std::shared_ptr< Name > name
TODO.
void set_token(const ModToken &tok)
Set token for the current ast node.
void reset_global_var(GlobalVarVector::const_iterator position, GlobalVar *n)
Reset member to variables.
bool is_independent_definition() const noexcept override
Check if the ast node is an instance of ast::IndependentDefinition.
bool is_elctrode_current() const noexcept override
Check if the ast node is an instance of ast::ElctrodeCurrent.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
IndependentBlock * clone() const override
Return a copy of the current node.
const IndependentDefinitionVector & get_definitions() const noexcept
Getter for member variable IndependentBlock::definitions.
virtual std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void set_symbol_table(symtab::SymbolTable *newsymtab) override
Set symbol table for the current ast node.
void set_symbol_table(symtab::SymbolTable *newsymtab) override
Set symbol table for the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
const std::shared_ptr< StatementBlock > & get_statement_block() const noexcept override
Getter for member variable ForNetcon::statement_block.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Boolean > sweep
TODO.
std::shared_ptr< Name > name
Name of the procedure.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::vector< std::shared_ptr< Name > > NameVector
IndependentDefinition * clone() const override
Return a copy of the current node.
std::shared_ptr< Name > block_name
Name of the block to solve.
void set_token(const ModToken &tok)
Set token for the current ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
Watch * clone() const override
Return a copy of the current node.
BinaryOperator * clone() const override
Return a copy of the current node.
double to_double() override
Return value of the current ast node as double.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
void set_symbol_table(symtab::SymbolTable *newsymtab) override
Set symbol table for the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
Represents DERIVATIVE block in the NMODL.
std::shared_ptr< StatementBlock > update_states_block
update back states from X
void insert_watch(WatchVector::const_iterator position, NodeType &to, InputIterator first, InputIterator last)
Insert members to statements.
ProtectStatement * clone() const override
Return a copy of the current node.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< StatementBlock > statement_block
Block with statements vector.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
virtual AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Expression > expression
TODO.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
FactorDef * clone() const override
Return a copy of the current node.
std::shared_ptr< ModToken > token
token with location information
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Unit > unit1
TODO.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< ModToken > token
token with location information
bool is_threadsafe_var() const noexcept override
Check if the ast node is an instance of ast::ThreadsafeVar.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
void reset_local_var(LocalVarVector::const_iterator position, LocalVar *n)
Reset member to variables.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
virtual std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
void insert_global_var(GlobalVarVector::const_iterator position, NodeType &to, InputIterator first, InputIterator last)
Insert members to variables.
std::shared_ptr< Expression > expr
TODO.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
const ExpressionVector & get_arguments() const noexcept
Getter for member variable FunctionCall::arguments.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< ModToken > token
token with location information
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void set_symbol_table(symtab::SymbolTable *newsymtab) override
Set symbol table for the current ast node.
std::shared_ptr< Identifier > name
Name of array variable.
WhileStatement * clone() const override
Return a copy of the current node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
Represents an argument to functions and procedures.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
type of ast::InitialBlock
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
symtab::SymbolTable * get_symbol_table() const override
Return associated symbol table for the current ast node.
Useion * clone() const override
Return a copy of the current node.
std::shared_ptr< ModToken > token
token with location information
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::vector< std::shared_ptr< Argument > > ArgumentVector
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void set_token(const ModToken &tok)
Set token for the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
const std::shared_ptr< Name > & get_name() const noexcept
Getter for member variable ForAllStatement::name.
void emplace_back_node(std::shared_ptr< Node > n)
Add member to blocks by shared_ptr.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::vector< std::shared_ptr< LocalVar > > LocalVarVector
ArgumentVector parameters
Arguments to the for netcon block.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
void emplace_back_statement(std::shared_ptr< Statement > n)
Add member to statements by shared_ptr.
void set_symbol_table(symtab::SymbolTable *newsymtab) override
Set symbol table for the current ast node.
bool is_stepped() const noexcept override
Check if the ast node is an instance of ast::Stepped.
std::shared_ptr< ModToken > token
token with location information
std::vector< std::shared_ptr< GlobalVar > > GlobalVarVector
const NumberVector & get_values() const noexcept
Getter for member variable Stepped::values.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< ModToken > token
token with location information
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
const std::shared_ptr< Name > & get_name() const noexcept
Getter for member variable LonDifuse::name.
bool is_electrode_cur_var() const noexcept override
Check if the ast node is an instance of ast::ElectrodeCurVar.
std::shared_ptr< ModToken > token
token with location information
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::shared_ptr< ModToken > token
token with location information
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
ExternVarVector variables
Vector of external variables.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
type of ast::FromStatement
bool is_linear_block() const noexcept override
Check if the ast node is an instance of ast::LinearBlock.
const std::shared_ptr< StatementBlock > & get_statement_block() const noexcept override
Getter for member variable InitialBlock::statement_block.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Identifier > name
Name of the argument.
QueueType
enum type for queue types
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
type of ast::NonspecificCurVar
double get_value() const noexcept
Getter for member variable Double::value.
const std::shared_ptr< Expression > & get_react() const noexcept
Getter for member variable Conserve::react.
std::shared_ptr< Expression > expression
TODO.
type of ast::FunctionBlock
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
bool is_procedure_block() const noexcept override
Check if the ast node is an instance of ast::ProcedureBlock.
void set_symbol_table(symtab::SymbolTable *newsymtab) override
Set symbol table for the current ast node.
const std::string & get_value() const noexcept
Getter for member variable String::value.
const WatchVector & get_statements() const noexcept
Getter for member variable WatchStatement::statements.
std::shared_ptr< Number > start
TODO.
MatchBlock * clone() const override
Return a copy of the current node.
const std::shared_ptr< Unit > & get_unit2() const noexcept
Getter for member variable UnitDef::unit2.
WriteIonVarVector writelist
Variables being written.
const std::shared_ptr< FirstLastTypeIndex > & get_index() const noexcept
Getter for member variable PartialBoundary::index.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::vector< std::shared_ptr< Match > > MatchVector
const std::shared_ptr< StatementBlock > & get_statement_block() const noexcept override
Getter for member variable ProcedureBlock::statement_block.
PlotVar * clone() const override
Return a copy of the current node.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< ModToken > token
token with location information
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< ModToken > token
token with location information
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
FirstLastType get_value() const noexcept
Getter for member variable FirstLastTypeIndex::value.
std::shared_ptr< Unit > unit2
TODO.
void reset_node(NodeVector::const_iterator position, Node *n)
Reset member to blocks.
NodeVector::const_iterator insert_node(NodeVector::const_iterator position, const std::shared_ptr< Node > &n)
Insert member to blocks.
VarNameVector variables
TODO.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
Represents a float variable.
ParamAssignVector statements
Vector of parameters.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
std::shared_ptr< Name > name
TODO.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
bool is_nonspecific_cur_var() const noexcept override
Check if the ast node is an instance of ast::NonspecificCurVar.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
void emplace_back_global_var(std::shared_ptr< GlobalVar > n)
Add member to variables by shared_ptr.
std::shared_ptr< ModToken > token
token with location information
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
Verbatim * clone() const override
Return a copy of the current node.
symtab::SymbolTable * get_symbol_table() const override
Return associated symbol table for the current ast node.
const std::shared_ptr< Number > & get_from() const noexcept
Getter for member variable IndependentDefinition::from.
FirstLastTypeIndex * clone() const override
Return a copy of the current node.
const std::shared_ptr< Name > & get_name2() const noexcept
Getter for member variable PartialEquation::name2.
bool is_section() const noexcept override
Check if the ast node is an instance of ast::Section.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< Name > name
TODO.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
Represent linear solver solution block based on Eigen.
bool is_verbatim() const noexcept override
Check if the ast node is an instance of ast::Verbatim.
RangeVarVector variables
Vector of range variables.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
LocalVarVector variables
TODO.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Number > min
TODO.
std::shared_ptr< ModToken > token
token with location information
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::vector< std::shared_ptr< VarName > > VarNameVector
std::shared_ptr< PlotVar > name
TODO.
std::shared_ptr< ModToken > token
token with location information
void set_token(const ModToken &tok)
Set token for the current ast node.
const LocalVarVector & get_variables() const noexcept
Getter for member variable LocalListStatement::variables.
void set_token(const ModToken &tok)
Set token for the current ast node.
NodeVector::const_iterator erase_node(NodeVector::const_iterator first)
Erase member to blocks.
const std::shared_ptr< Name > & get_name() const noexcept
Getter for member variable FunctionTableBlock::name.
std::shared_ptr< Identifier > name
Name of variable.
void set_token(const ModToken &tok)
Set token for the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
const std::shared_ptr< Unit > & get_unit1() const noexcept
Getter for member variable FactorDef::unit1.
bool is_constructor_block() const noexcept override
Check if the ast node is an instance of ast::ConstructorBlock.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
Global * clone() const override
Return a copy of the current node.
std::shared_ptr< Expression > lhs
LHS of the binary expression.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
const PointerVarVector & get_variables() const noexcept
Getter for member variable Pointer::variables.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
bool is_if_statement() const noexcept override
Check if the ast node is an instance of ast::IfStatement.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
const std::shared_ptr< Expression > & get_to() const noexcept
Getter for member variable TableStatement::to.
std::vector< std::shared_ptr< ReadIonVar > > ReadIonVarVector
void set_token(const ModToken &tok)
Set token for the current ast node.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
std::shared_ptr< Expression > value
TODO.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
int value
Value of integer.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
void set_symbol_table(symtab::SymbolTable *newsymtab) override
Set symbol table for the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< ModToken > token
token with location information
Represents an integer variable.
symtab::SymbolTable * get_symbol_table() const override
Return associated symbol table for the current ast node.
bool is_function_block() const noexcept override
Check if the ast node is an instance of ast::FunctionBlock.
std::shared_ptr< StatementBlock > statement_block
Block with statements vector.
std::shared_ptr< ModToken > token
token with location information
ExpressionVector definitions
Vector of unit statements.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
BinaryOp get_value() const noexcept
Getter for member variable BinaryOperator::value.
const std::shared_ptr< Expression > & get_left_linxpression() const noexcept
Getter for member variable LinEquation::left_linxpression.
std::vector< std::shared_ptr< PlotVar > > PlotVarVector
std::shared_ptr< Identifier > name
Name of the variable (TODO)
void set_token(const ModToken &tok)
Set token for the current ast node.
PlotBlock * clone() const override
Return a copy of the current node.
Represents a DESTRUCTOR block in the NMODL.
const std::shared_ptr< Name > & get_name() const noexcept
Getter for member variable FromStatement::name.
ParamAssign * clone() const override
Return a copy of the current node.
void set_token(const ModToken &tok)
Set token for the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
const std::shared_ptr< Name > & get_name1() const noexcept
Getter for member variable PartialBoundary::name1.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
Represent SENS statement in NMODL.
symtab::SymbolTable * get_symbol_table() const override
Return associated symbol table for the current ast node.
const std::shared_ptr< BABlock > & get_bablock() const noexcept
Getter for member variable AfterBlock::bablock.
const std::shared_ptr< String > & get_value() const noexcept
Getter for member variable PrimeName::value.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
type of ast::BbcorePointerVar
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
void emplace_back_local_var(LocalVar *n)
Add member to variables by raw pointer.
virtual Statement * clone() const override
Return a copy of the current node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
const std::shared_ptr< StatementBlock > & get_statement_block() const noexcept override
Getter for member variable PartialBlock::statement_block.
std::shared_ptr< String > ontology_id
Ontology name.
bool is_statement() const noexcept override
Check if the ast node is an instance of ast::Statement.
bool is_wrapped_expression() const noexcept override
Check if the ast node is an instance of ast::WrappedExpression.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
bool is_nonspecific() const noexcept override
Check if the ast node is an instance of ast::Nonspecific.
bool is_constant_var() const noexcept override
Check if the ast node is an instance of ast::ConstantVar.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
void reset_watch(WatchVector::const_iterator position, std::shared_ptr< Watch > n)
Reset member to statements.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< Unit > unit
Unit of the argument.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
const std::shared_ptr< QueueExpressionType > & get_qtype() const noexcept
Getter for member variable QueueStatement::qtype.
std::shared_ptr< StatementBlock > statement_block
TODO.
bool is_function_call() const noexcept override
Check if the ast node is an instance of ast::FunctionCall.
std::shared_ptr< Expression > expression2
TODO.
UnitState * clone() const override
Return a copy of the current node.
ConstantStatement * clone() const override
Return a copy of the current node.
std::shared_ptr< Expression > expression
TODO.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
const std::shared_ptr< Integer > & get_value() const noexcept
Getter for member variable Define::value.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
const BbcorePointerVarVector & get_variables() const noexcept
Getter for member variable BbcorePointer::variables.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
virtual std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
bool is_discrete_block() const noexcept override
Check if the ast node is an instance of ast::DiscreteBlock.
bool is_bbcore_pointer() const noexcept override
Check if the ast node is an instance of ast::BbcorePointer.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
bool is_section_var() const noexcept override
Check if the ast node is an instance of ast::SectionVar.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
Type to represent different block types for before/after block.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
NeuronBlock * clone() const override
Return a copy of the current node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::vector< std::shared_ptr< BbcorePointerVar > > BbcorePointerVarVector
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
bool is_model() const noexcept override
Check if the ast node is an instance of ast::Model.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
std::shared_ptr< Identifier > name
TODO.
const std::shared_ptr< String > & get_statement() const noexcept
Getter for member variable Verbatim::statement.
std::shared_ptr< Integer > length
Length in case of array.
std::shared_ptr< ModToken > token
token with location information
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
type of ast::ElctrodeCurrent
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
const std::shared_ptr< Name > & get_name() const noexcept
Getter for member variable Useion::name.
Sens * clone() const override
Return a copy of the current node.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
std::shared_ptr< StatementBlock > finalize_block
Statement block to be executed after calling linear solver.
const std::shared_ptr< Name > & get_name() const noexcept
Getter for member variable PointerVar::name.
const std::shared_ptr< Double > & get_max() const noexcept
Getter for member variable Limits::max.
Represents the coreneuron nrn_state callback function.
const std::shared_ptr< StatementBlock > & get_statement_block() const noexcept override
Getter for member variable ForAllStatement::statement_block.
virtual std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< String > filename
TODO.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
const std::shared_ptr< Identifier > & get_name() const noexcept
Getter for member variable VarName::name.
std::shared_ptr< ModToken > token
token with location information
bool is_range() const noexcept override
Check if the ast node is an instance of ast::Range.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
Represents a prime variable (for ODE)
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
AfterBlock * clone() const override
Return a copy of the current node.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
MutexUnlock * clone() const override
Return a copy of the current node.
NameVector solvefor
Name of the integration method.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< ModToken > token
token with location information
BinaryOperator op
Operator.
std::shared_ptr< Expression > expression1
TODO.
type of ast::ProcedureBlock
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
symtab::SymbolTable * get_symbol_table() const override
Return associated symbol table for the current ast node.
Represents BBCOREPOINTER statement in NMODL.
std::shared_ptr< ModToken > token
token with location information
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
type of ast::BbcorePointer
std::shared_ptr< ModToken > token
token with location information
const std::shared_ptr< Expression > & get_index() const noexcept
Getter for member variable VarName::index.
float value
Value of float.
bool is_define() const noexcept override
Check if the ast node is an instance of ast::Define.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< String > title
TODO.
bool is_compartment() const noexcept override
Check if the ast node is an instance of ast::Compartment.
std::shared_ptr< StatementBlock > statement_block
Block with statements vector.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
const ExternVarVector & get_variables() const noexcept
Getter for member variable External::variables.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
type of ast::ThreadsafeVar
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Double > value
TODO.
void set_symbol_table(symtab::SymbolTable *newsymtab) override
Set symbol table for the current ast node.
ArgumentVector parameters
Parameters to the net receive block.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
const std::shared_ptr< Identifier > & get_name() const noexcept
Getter for member variable PartialBoundary::name.
int value
Value of boolean.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
Reset * clone() const override
Return a copy of the current node.
const AssignedDefinitionVector & get_definitions() const noexcept
Getter for member variable StateBlock::definitions.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< Expression > reaction2
TODO.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
const WriteIonVarVector & get_writelist() const noexcept
Getter for member variable Useion::writelist.
const std::shared_ptr< Unit > & get_unit() const noexcept
Getter for member variable FunctionTableBlock::unit.
std::shared_ptr< ModToken > token
token with location information
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void set_token(const ModToken &tok)
Set token for the current ast node.
Represents differential equation in DERIVATIVE block.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
virtual void set_parent(Ast *p)
Parent setter.
Integer * clone() const override
Return a copy of the current node.
type of ast::QueueStatement
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
WatchVector::const_iterator erase_watch(WatchVector::const_iterator first, WatchVector::const_iterator last)
Erase members to statements.
void emplace_back_watch(Watch *n)
Add member to statements by raw pointer.
const std::shared_ptr< Unit > & get_unit() const noexcept
Getter for member variable AssignedDefinition::unit.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
const std::shared_ptr< StatementBlock > & get_statement_block() const noexcept override
Getter for member variable FromStatement::statement_block.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
SectionVarVector sections
Vector of section variables.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
const std::shared_ptr< Expression > & get_expression() const noexcept
Getter for member variable PartialBoundary::expression.
const std::shared_ptr< Number > & get_start() const noexcept
Getter for member variable IndependentDefinition::start.
type of ast::UnaryExpression
bool is_protect_statement() const noexcept override
Check if the ast node is an instance of ast::ProtectStatement.
DoubleUnit * clone() const override
Return a copy of the current node.
type of ast::QueueExpressionType
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
symtab::SymbolTable * get_symbol_table() const override
Return associated symbol table for the current ast node.
std::shared_ptr< ModToken > token
token with location information
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
const std::shared_ptr< Name > & get_byname() const noexcept
Getter for member variable LagStatement::byname.
type of ast::WhileStatement
void set_token(const ModToken &tok)
Set token for the current ast node.
const std::shared_ptr< Name > & get_name() const noexcept
Getter for member variable ThreadsafeVar::name.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
BbcorePointer * clone() const override
Return a copy of the current node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
bool is_match() const noexcept override
Check if the ast node is an instance of ast::Match.
bool is_eigen_newton_solver_block() const noexcept override
Check if the ast node is an instance of ast::EigenNewtonSolverBlock.
Represent LONGITUDINAL_DIFFUSION statement in NMODL.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::vector< std::shared_ptr< IndependentDefinition > > IndependentDefinitionVector
bool is_unit() const noexcept override
Check if the ast node is an instance of ast::Unit.
void set_token(const ModToken &tok)
Set token for the current ast node.
NodeVector::const_iterator erase_node(NodeVector::const_iterator first, NodeVector::const_iterator last)
Erase members to blocks.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
void set_symbol_table(symtab::SymbolTable *newsymtab) override
Set symbol table for the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
type of ast::PartialEquation
ElseIfStatement * clone() const override
Return a copy of the current node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< ModToken > token
token with location information
const std::shared_ptr< PrimeName > & get_prime() const noexcept
Getter for member variable PartialEquation::prime.
Stepped * clone() const override
Return a copy of the current node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
NameVector depend_vars
dependent variables
void set_token(const ModToken &tok)
Set token for the current ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
const std::shared_ptr< Valence > & get_valence() const noexcept
Getter for member variable Useion::valence.
Represents a boolean variable.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
void set_symbol_table(symtab::SymbolTable *newsymtab) override
Set symbol table for the current ast node.
symtab::SymbolTable * get_symbol_table() const override
Return associated symbol table for the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
bool is_terminal_block() const noexcept override
Check if the ast node is an instance of ast::TerminalBlock.
QueueType get_value() const noexcept
Getter for member variable QueueExpressionType::value.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
void set_symbol_table(symtab::SymbolTable *newsymtab) override
Set symbol table for the current ast node.
std::shared_ptr< VarName > name
TODO.
LagStatement * clone() const override
Return a copy of the current node.
BABlockType * clone() const override
Return a copy of the current node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::shared_ptr< StatementBlock > statement_block
Block with statements vector.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::shared_ptr< Name > del2
TODO.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
AssignedDefinitionVector definitions
Vector of assigned variables.
type of ast::LagStatement
WatchVector::const_iterator erase_watch(WatchVector::const_iterator first)
Erase member to statements.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
const std::shared_ptr< Double > & get_value() const noexcept
Getter for member variable FactorDef::value.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
bool is_sens() const noexcept override
Check if the ast node is an instance of ast::Sens.
const std::shared_ptr< Integer > & get_order() const noexcept
Getter for member variable PrimeName::order.
void set_token(const ModToken &tok)
Set token for the current ast node.
NonspecificCurVarVector currents
Vector of non specific variables.
Section * clone() const override
Return a copy of the current node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
bool is_external() const noexcept override
Check if the ast node is an instance of ast::External.
std::shared_ptr< ModToken > token
token with location information
ThreadSafe * clone() const override
Return a copy of the current node.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
LocalVarVector::const_iterator erase_local_var(LocalVarVector::const_iterator first, LocalVarVector::const_iterator last)
Erase members to variables.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
type of ast::PlotDeclaration
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< ModToken > token
token with location information
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
symtab::SymbolTable * get_symbol_table() const override
Return associated symbol table for the current ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
const std::shared_ptr< PlotVar > & get_name() const noexcept
Getter for member variable PlotDeclaration::name.
GlobalVar * clone() const override
Return a copy of the current node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
const std::shared_ptr< Name > & get_name() const noexcept
Getter for member variable ExternVar::name.
bool is_float() const noexcept override
Check if the ast node is an instance of ast::Float.
symtab::SymbolTable * get_symbol_table() const override
Return associated symbol table for the current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
const NameVector & get_solvefor() const noexcept
Getter for member variable NonLinearBlock::solvefor.
bool is_unit_block() const noexcept override
Check if the ast node is an instance of ast::UnitBlock.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
Represents CONDUCTANCE statement in NMODL.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
bool is_pointer_var() const noexcept override
Check if the ast node is an instance of ast::PointerVar.
std::shared_ptr< StatementBlock > statement_block
TODO.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< ModToken > token
token with location information
bool is_plot_var() const noexcept override
Check if the ast node is an instance of ast::PlotVar.
std::shared_ptr< ModToken > token
token with location information
void set_symbol_table(symtab::SymbolTable *newsymtab) override
Set symbol table for the current ast node.
virtual Expression * clone() const override
Return a copy of the current node.
std::shared_ptr< Name > name
TODO.
WriteIonVar * clone() const override
Return a copy of the current node.
void set_token(const ModToken &tok)
Set token for the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
type of ast::ParenExpression
std::shared_ptr< Number > to
TODO.
const std::shared_ptr< Expression > & get_linxpression() const noexcept
Getter for member variable LinEquation::linxpression.
std::shared_ptr< Double > value
TODO.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
StepBlock * clone() const override
Return a copy of the current node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
const std::shared_ptr< Name > & get_name() const noexcept
Getter for member variable ElectrodeCurVar::name.
const ConstantStatementVector & get_statements() const noexcept
Getter for member variable ConstantBlock::statements.
SolveBlock * clone() const override
Return a copy of the current node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< ModToken > token
token with location information
void set_symbol_table(symtab::SymbolTable *newsymtab) override
Set symbol table for the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
PlotDeclaration * clone() const override
Return a copy of the current node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
PrimeName * clone() const override
Return a copy of the current node.
ElectrodeCurVarVector currents
Vector of electrode current variables.
std::shared_ptr< ModToken > token
token with location information
DestructorBlock * clone() const override
Return a copy of the current node.
Name * clone() const override
Return a copy of the current node.
const std::shared_ptr< ConstantVar > & get_constant() const noexcept
Getter for member variable ConstantStatement::constant.
Represent NEURON block in the mod file.
std::shared_ptr< Name > conductance
Conductance variable.
std::shared_ptr< StatementBlock > statement_block
TODO.
PointerVar * clone() const override
Return a copy of the current node.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
std::shared_ptr< String > ontology_id
Ontology to indicate the chemical ion.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< Name > name3
TODO.
std::shared_ptr< Identifier > name
Name of the variable.
bool is_solve_block() const noexcept override
Check if the ast node is an instance of ast::SolveBlock.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void set_token(const ModToken &tok)
Set token for the current ast node.
NameVector solvefor
Solve for specification (TODO)
double to_double() override
Return value of the current ast node as double.
bool is_var_name() const noexcept override
Check if the ast node is an instance of ast::VarName.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
const StatementVector & get_statements() const noexcept
Getter for member variable StatementBlock::statements.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
bool is_net_receive_block() const noexcept override
Check if the ast node is an instance of ast::NetReceiveBlock.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void reset_node(NodeVector::const_iterator position, std::shared_ptr< Node > n)
Reset member to blocks.
std::shared_ptr< Name > name1
TODO.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< ModToken > token
token with location information
void negate() override
Negate the value of current ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
const std::shared_ptr< SolveBlock > & get_solve_block() const noexcept
Getter for member variable SolutionExpression::solve_block.
const std::shared_ptr< Name > & get_name() const noexcept
Getter for member variable ProcedureBlock::name.
std::shared_ptr< ModToken > token
token with location information
const std::shared_ptr< Number > & get_max() const noexcept
Getter for member variable NumberRange::max.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
GlobalVarVector variables
Vector of global variables.
std::shared_ptr< ModToken > token
token with location information
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
Base class for all block scoped nodes.
const std::shared_ptr< StatementBlock > & get_initialize_block() const noexcept
Getter for member variable EigenLinearSolverBlock::initialize_block.
std::shared_ptr< Expression > node_to_solve
Block to be solved (callback node or solution node itself)
std::shared_ptr< Unit > unit
TODO.
bool is_write_ion_var() const noexcept override
Check if the ast node is an instance of ast::WriteIonVar.
symtab::SymbolTable * get_symbol_table() const override
Return associated symbol table for the current ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
bool is_include() const noexcept override
Check if the ast node is an instance of ast::Include.
std::shared_ptr< Integer > index
TODO.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
const std::shared_ptr< StatementBlock > & get_statement_block() const noexcept override
Getter for member variable NetReceiveBlock::statement_block.
type of ast::DerivimplicitCallback
type of ast::TableStatement
void set_token(const ModToken &tok)
Set token for the current ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
type of ast::NonLinEquation
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::shared_ptr< ModToken > token
token with location information
const std::shared_ptr< StatementBlock > & get_statement_block() const noexcept override
Getter for member variable LinearBlock::statement_block.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::shared_ptr< Name > name
TODO.
PartialBoundary * clone() const override
Return a copy of the current node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::vector< std::shared_ptr< NonspecificCurVar > > NonspecificCurVarVector
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< ModToken > token
token with location information
bool is_indexed_name() const noexcept override
Check if the ast node is an instance of ast::IndexedName.
ForNetcon * clone() const override
Return a copy of the current node.
bool is_mutex_unlock() const noexcept override
Check if the ast node is an instance of ast::MutexUnlock.
std::shared_ptr< Name > name
TODO.
std::vector< std::shared_ptr< ElectrodeCurVar > > ElectrodeCurVarVector
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
type of ast::DestructorBlock
virtual std::string get_node_name() const
Return name of of the node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
const std::shared_ptr< StatementBlock > & get_statement_block() const noexcept override
Getter for member variable KineticBlock::statement_block.
const std::shared_ptr< Identifier > & get_name() const noexcept
Getter for member variable QueueStatement::name.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
type of ast::AssignedBlock
const std::shared_ptr< Unit > & get_unit() const noexcept
Getter for member variable ProcedureBlock::unit.
std::shared_ptr< StatementBlock > statement_block
Block with statements vector.
size_t erase_node(std::unordered_set< Node *> &to_be_erased)
Erase non-consecutive members to blocks.
bool is_diff_eq_expression() const noexcept override
Check if the ast node is an instance of ast::DiffEqExpression.
const std::shared_ptr< Expression > & get_from() const noexcept
Getter for member variable FromStatement::from.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::shared_ptr< Name > type
TODO.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
FromStatement * clone() const override
Return a copy of the current node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
Program * clone() const override
Return a copy of the current node.
const std::shared_ptr< String > & get_ontology_id() const noexcept
Getter for member variable OntologyStatement::ontology_id.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
type of ast::ConstructorBlock
const NameVector & get_table_vars() const noexcept
Getter for member variable TableStatement::table_vars.
const MatchVector & get_matchs() const noexcept
Getter for member variable MatchBlock::matchs.
std::shared_ptr< ModToken > token
token with location information
std::string eval() const
Return enum value in string form.
const std::shared_ptr< StatementBlock > & get_initialize_block() const noexcept
Getter for member variable EigenNewtonSolverBlock::initialize_block.
const NodeVector & get_blocks() const noexcept
Getter for member variable Program::blocks.
StatementVector statements
Vector of statements.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
symtab::SymbolTable * get_symbol_table() const override
Return associated symbol table for the current ast node.
RangeVar * clone() const override
Return a copy of the current node.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
const std::shared_ptr< Name > & get_name() const noexcept
Getter for member variable Suffix::name.
BbcorePointerVar * clone() const override
Return a copy of the current node.
std::shared_ptr< Name > name2
TODO.
std::shared_ptr< ModToken > token
token with location information
AssignedBlock * clone() const override
Return a copy of the current node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
type of ast::BinaryExpression
void set_token(const ModToken &tok)
Set token for the current ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::shared_ptr< Integer > with
TODO.
bool is_ba_block_type() const noexcept override
Check if the ast node is an instance of ast::BABlockType.
void set_token(const ModToken &tok)
Set token for the current ast node.
ReactVarName * clone() const override
Return a copy of the current node.
const std::shared_ptr< Name > & get_name() const noexcept
Getter for member variable RangeVar::name.
void set_token(const ModToken &tok)
Set token for the current ast node.
type of ast::BinaryOperator
symtab::SymbolTable * get_symbol_table() const override
Return associated symbol table for the current ast node.
Argument * clone() const override
Return a copy of the current node.
MatchVector matchs
Vector of match statements.
void set_token(const ModToken &tok)
Set token for the current ast node.
const std::shared_ptr< Expression > & get_expression() const noexcept
Getter for member variable ExpressionStatement::expression.
const std::shared_ptr< Identifier > & get_name() const noexcept
Getter for member variable IndexedName::name.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
const std::shared_ptr< Integer > & get_at() const noexcept
Getter for member variable VarName::at.
void set_token(const ModToken &tok)
Set token for the current ast node.
ParenExpression * clone() const override
Return a copy of the current node.
Auto generated AST classes declaration.
std::shared_ptr< Name > method
Name of the integration method.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::shared_ptr< ModToken > token
token with location information
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
type of ast::NetReceiveBlock
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
bool is_conductance_hint() const noexcept override
Check if the ast node is an instance of ast::ConductanceHint.
Base class for all AST node.
TerminalBlock * clone() const override
Return a copy of the current node.
FunctionBlock * clone() const override
Return a copy of the current node.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< ElseStatement > elses
TODO.
Base class for all numbers.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
symtab::SymbolTable * get_symbol_table() const override
Return associated symbol table for the current ast node.
bool is_breakpoint_block() const noexcept override
Check if the ast node is an instance of ast::BreakpointBlock.
SteppedVector statements
Vector of statements.
const std::shared_ptr< Double > & get_value() const noexcept
Getter for member variable DoubleUnit::value.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::shared_ptr< Valence > valence
(TODO)
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
bool is_param_block() const noexcept override
Check if the ast node is an instance of ast::ParamBlock.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
bool eval() const
Return value of the ast node.
IndependentDefinitionVector definitions
TODO.
std::shared_ptr< Name > macro
if integer is a macro then it's name
std::shared_ptr< Unit > unit
TODO.
bool is_unit_def() const noexcept override
Check if the ast node is an instance of ast::UnitDef.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
bool is_watch_statement() const noexcept override
Check if the ast node is an instance of ast::WatchStatement.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
ConstantStatementVector statements
Vector of constant statements.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
type of ast::StatementBlock
std::vector< std::shared_ptr< Watch > > WatchVector
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
void set_symbol_table(symtab::SymbolTable *newsymtab) override
Set symbol table for the current ast node.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
Represents NONLINEAR block in the NMODL.
void set_token(const ModToken &tok)
Set token for the current ast node.
KineticBlock * clone() const override
Return a copy of the current node.
std::string eval() const
Return enum value in string form.
std::shared_ptr< ModToken > token
token with location information
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
const std::shared_ptr< Unit > & get_unit() const noexcept
Getter for member variable FunctionBlock::unit.
BeforeBlock * clone() const override
Return a copy of the current node.
const NameVector & get_solvefor() const noexcept
Getter for member variable KineticBlock::solvefor.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
ReactionStatement * clone() const override
Return a copy of the current node.
size_t erase_watch(std::unordered_set< Watch *> &to_be_erased)
Erase non-consecutive members to statements.
Represents a double variable.
const std::shared_ptr< Expression > & get_expression() const noexcept
Getter for member variable Watch::expression.
StatementBlock * clone() const override
Return a copy of the current node.
EigenNewtonSolverBlock * clone() const override
Return a copy of the current node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
bool is_unit_state() const noexcept override
Check if the ast node is an instance of ast::UnitState.
std::shared_ptr< FirstLastTypeIndex > index
TODO.
std::shared_ptr< ModToken > token
token with location information
const std::shared_ptr< StatementBlock > & get_statement_block() const noexcept override
Getter for member variable NonLinearBlock::statement_block.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
bool is_binary_expression() const noexcept override
Check if the ast node is an instance of ast::BinaryExpression.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
ParamBlock * clone() const override
Return a copy of the current node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
StateBlock * clone() const override
Return a copy of the current node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Unit > unit
Unit if specified.
bool is_independent_block() const noexcept override
Check if the ast node is an instance of ast::IndependentBlock.
symtab::SymbolTable * get_symbol_table() const override
Return associated symbol table for the current ast node.
void insert_node(NodeVector::const_iterator position, NodeType &to, InputIterator first, InputIterator last)
Insert members to blocks.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
bool is_local_var() const noexcept override
Check if the ast node is an instance of ast::LocalVar.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
bool is_solution_expression() const noexcept override
Check if the ast node is an instance of ast::SolutionExpression.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< ModToken > token
token with location information
void set_symbol_table(symtab::SymbolTable *newsymtab) override
Set symbol table for the current ast node.
Represents NONSPECIFIC_CURRENT variables statement in NMODL.
PointerVarVector variables
Vector of pointer variables.
double eval() const
Return value of the ast node.
BAType
enum type to distinguish BEFORE or AFTER blocks
void set_token(const ModToken &tok)
Set token for the current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
Represents a DEFINE statement in NMODL.
void set_symbol_table(symtab::SymbolTable *newsymtab) override
Set symbol table for the current ast node.
Represents a STATE block in the NMODL.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::shared_ptr< Number > value
Value of the constant.
static const std::string UnitStateTypeNames[]
string representation of ast::UnitStateType
type of ast::EigenNewtonSolverBlock
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
void set_token(const ModToken &tok)
Set token for the current ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< ModToken > token
token with location information
symtab::SymbolTable * get_symbol_table() const override
Return associated symbol table for the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
const std::shared_ptr< BABlockType > & get_type() const noexcept
Getter for member variable BABlock::type.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
const AssignedDefinitionVector & get_definitions() const noexcept
Getter for member variable AssignedBlock::definitions.
void set_token(const ModToken &tok)
Set token for the current ast node.
type of ast::DiffEqExpression
const std::shared_ptr< Expression > & get_reaction1() const noexcept
Getter for member variable ReactionStatement::reaction1.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
bool is_factor_def() const noexcept override
Check if the ast node is an instance of ast::FactorDef.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
WatchVector::const_iterator insert_watch(WatchVector::const_iterator position, const std::shared_ptr< Watch > &n)
Insert member to statements.
std::shared_ptr< ModToken > token
token with location information
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
bool is_from_statement() const noexcept override
Check if the ast node is an instance of ast::FromStatement.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Double > abstol
TODO.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::vector< std::shared_ptr< Expression > > ExpressionVector
bool is_valence() const noexcept override
Check if the ast node is an instance of ast::Valence.
std::shared_ptr< Name > ion
Ion name.
std::vector< std::shared_ptr< Stepped > > SteppedVector
bool is_local_list_statement() const noexcept override
Check if the ast node is an instance of ast::LocalListStatement.
std::shared_ptr< Name > name
Name of the function.
std::shared_ptr< Name > del
TODO.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Limits > limit
TODO.
Represents THREADSAFE statement in NMODL.
NetReceiveBlock * clone() const override
Return a copy of the current node.
ElctrodeCurrent * clone() const override
Return a copy of the current node.
bool is_derivative_block() const noexcept override
Check if the ast node is an instance of ast::DerivativeBlock.
std::shared_ptr< Number > max
TODO.
bool is_node() const noexcept override
Check if the ast node is an instance of ast::Node.
std::shared_ptr< ModToken > token
token with location information
BbcorePointerVarVector variables
Vector of bbcore pointer variables.
ExpressionVector arguments
TODO.
bool is_step_block() const noexcept override
Check if the ast node is an instance of ast::StepBlock.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< Name > name
TODO.
void reset_global_var(GlobalVarVector::const_iterator position, std::shared_ptr< GlobalVar > n)
Reset member to variables.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< StatementBlock > statement_block
Block with statements vector.
bool is_string() const noexcept override
Check if the ast node is an instance of ast::String.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::shared_ptr< StatementBlock > statement_block
TODO.
const std::shared_ptr< Limits > & get_limit() const noexcept
Getter for member variable ParamAssign::limit.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< Expression > expression
TODO.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< StatementBlock > setup_x_block
update X from states
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< Boolean > gt
Todo: Michael : rename variable gt as well.
bool is_paren_expression() const noexcept override
Check if the ast node is an instance of ast::ParenExpression.
std::shared_ptr< ModToken > token
token with location information
Represents CURIE information in NMODL.
bool is_after_block() const noexcept override
Check if the ast node is an instance of ast::AfterBlock.
std::vector< std::shared_ptr< AssignedDefinition > > AssignedDefinitionVector
std::string eval() const
Return enum value in string form.
ForAllStatement * clone() const override
Return a copy of the current node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
const std::shared_ptr< Number > & get_to() const noexcept
Getter for member variable IndependentDefinition::to.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
const std::shared_ptr< Name > & get_name() const noexcept
Getter for member variable IndependentDefinition::name.
const std::shared_ptr< Expression > & get_from() const noexcept
Getter for member variable TableStatement::from.
virtual AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
void reset_watch(WatchVector::const_iterator position, Watch *n)
Reset member to statements.
std::shared_ptr< ModToken > token
token with location information
const ArgumentVector & get_parameters() const noexcept override
Getter for member variable NetReceiveBlock::parameters.
const std::shared_ptr< Double > & get_abstol() const noexcept
Getter for member variable AssignedDefinition::abstol.
std::shared_ptr< ModToken > token
token with location information
const std::shared_ptr< Expression > & get_expression1() const noexcept
Getter for member variable ReactionStatement::expression1.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::shared_ptr< Name > name
Name of the kinetic block.
std::shared_ptr< Expression > from
from value
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
const std::shared_ptr< Name > & get_macro() const noexcept
Getter for member variable Integer::macro.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::vector< std::shared_ptr< SectionVar > > SectionVarVector
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
bool is_thread_safe() const noexcept override
Check if the ast node is an instance of ast::ThreadSafe.
bool is_eigen_linear_solver_block() const noexcept override
Check if the ast node is an instance of ast::EigenLinearSolverBlock.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
const std::shared_ptr< Expression > & get_rhs() const noexcept
Getter for member variable NonLinEquation::rhs.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
bool is_table_statement() const noexcept override
Check if the ast node is an instance of ast::TableStatement.
std::shared_ptr< ModToken > token
token with location information
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
const std::shared_ptr< StatementBlock > & get_setup_x_block() const noexcept
Getter for member variable EigenNewtonSolverBlock::setup_x_block.
const std::shared_ptr< Identifier > & get_name() const noexcept
Getter for member variable LocalVar::name.
std::shared_ptr< Name > name
Name of the function table block.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Expression > index
index value in case of array
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
double to_double() override
Return value of the current ast node as double.
const ReactionOperator & get_op() const noexcept
Getter for member variable ReactionStatement::op.
symtab::SymbolTable * get_symbol_table() const override
Return associated symbol table for the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
const std::shared_ptr< StatementBlock > & get_statement_block() const noexcept override
Getter for member variable TerminalBlock::statement_block.
std::shared_ptr< String > name
TODO.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
std::shared_ptr< ModToken > token
token with location information
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
bool is_else_statement() const noexcept override
Check if the ast node is an instance of ast::ElseStatement.
symtab::SymbolTable * get_symbol_table() const override
Return associated symbol table for the current ast node.
const std::shared_ptr< Name > & get_name() const noexcept
Getter for member variable LinearBlock::name.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::shared_ptr< ModToken > token
token with location information
void set_token(const ModToken &tok)
Set token for the current ast node.
const std::shared_ptr< Name > & get_name() const noexcept
Getter for member variable Compartment::name.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
Conserve * clone() const override
Return a copy of the current node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
ExternVar * clone() const override
Return a copy of the current node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Identifier > name
Name of the variable.
Base class for all identifiers.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
UnitBlock * clone() const override
Return a copy of the current node.
ElseIfStatementVector elseifs
TODO.
std::shared_ptr< Number > value
TODO.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
const std::shared_ptr< Block > & get_node_to_solve() const noexcept
Getter for member variable DerivimplicitCallback::node_to_solve.
void insert_statement(StatementVector::const_iterator position, NodeType &to, InputIterator first, InputIterator last)
Insert members to statements.
symtab::SymbolTable * get_symbol_table() const override
Return associated symbol table for the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< Name > type
type of channel
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< StatementBlock > initialize_block
Statement block to be executed before calling linear solver.
const std::shared_ptr< Expression > & get_node_to_solve() const noexcept
Getter for member variable SolutionExpression::node_to_solve.
const std::shared_ptr< Name > & get_del() const noexcept
Getter for member variable PartialBoundary::del.
virtual std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
bool is_reaction_statement() const noexcept override
Check if the ast node is an instance of ast::ReactionStatement.
const std::shared_ptr< ElseStatement > & get_elses() const noexcept
Getter for member variable IfStatement::elses.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
const std::shared_ptr< BinaryExpression > & get_expression() const noexcept
Getter for member variable DiffEqExpression::expression.
bool is_prime_name() const noexcept override
Check if the ast node is an instance of ast::PrimeName.
std::string eval() const
Return value of the ast node.
Represents block encapsulating list of statements.
const std::shared_ptr< Expression > & get_expression() const noexcept
Getter for member variable Compartment::expression.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Expression > linxpression
TODO.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
Represent RESET statement in NMODL.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
type of ast::FunctionTableBlock
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
const std::shared_ptr< Name > & get_name3() const noexcept
Getter for member variable PartialBoundary::name3.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
bool is_suffix() const noexcept override
Check if the ast node is an instance of ast::Suffix.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
type of ast::TerminalBlock
NrnStateBlock * clone() const override
Return a copy of the current node.
ProcedureBlock * clone() const override
Return a copy of the current node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
const std::shared_ptr< StatementBlock > & get_statement_block() const noexcept override
Getter for member variable BABlock::statement_block.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Name > name
TODO.
void emplace_back_local_var(std::shared_ptr< LocalVar > n)
Add member to variables by shared_ptr.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void set_token(const ModToken &tok)
Set token for the current ast node.
size_t erase_global_var(std::unordered_set< GlobalVar *> &to_be_erased)
Erase non-consecutive members to variables.
const std::shared_ptr< Name > & get_method() const noexcept
Getter for member variable SolveBlock::method.
SolutionExpression * clone() const override
Return a copy of the current node.
std::shared_ptr< ModToken > token
token with location information
void set_token(const ModToken &tok)
Set token for the current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
bool is_lon_difuse() const noexcept override
Check if the ast node is an instance of ast::LonDifuse.
virtual void visit_children(visitor::Visitor &v) override
visit children i.e.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void set_token(const ModToken &tok)
Set token for the current ast node.
type of ast::OntologyStatement
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
NumberRange * clone() const override
Return a copy of the current node.
std::shared_ptr< Name > name
TODO.
std::shared_ptr< ModToken > token
token with location information
void set_token(const ModToken &tok)
Set token for the current ast node.
bool is_plot_block() const noexcept override
Check if the ast node is an instance of ast::PlotBlock.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
MutexLock * clone() const override
Return a copy of the current node.
type of ast::BlockComment
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
bool is_program() const noexcept override
Check if the ast node is an instance of ast::Program.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
const std::shared_ptr< Boolean > & get_sweep() const noexcept
Getter for member variable IndependentDefinition::sweep.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
const std::shared_ptr< StatementBlock > & get_statement_block() const noexcept override
Getter for member variable WhileStatement::statement_block.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Expression > to
to values
void set_token(const ModToken &tok)
Set token for the current ast node.
const ExpressionVector & get_definitions() const noexcept
Getter for member variable UnitBlock::definitions.
const std::shared_ptr< Name > & get_name() const noexcept
Getter for member variable SectionVar::name.
void set_symbol_table(symtab::SymbolTable *newsymtab) override
Set symbol table for the current ast node.
const std::shared_ptr< Number > & get_start() const noexcept
Getter for member variable AssignedDefinition::start.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Unit > unit1
TODO.
const std::shared_ptr< Name > & get_name() const noexcept
Getter for member variable DerivativeBlock::name.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< StatementBlock > statement_block
Block with statements vector.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
type of ast::DerivativeBlock
bool is_read_ion_var() const noexcept override
Check if the ast node is an instance of ast::ReadIonVar.
std::shared_ptr< StatementBlock > statement_block
Block with statements vector.
const std::shared_ptr< Name > & get_name() const noexcept
Getter for member variable GlobalVar::name.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
const std::shared_ptr< Expression > & get_lhs() const noexcept
Getter for member variable NonLinEquation::lhs.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
virtual std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
const BinaryOperator & get_op() const noexcept
Getter for member variable BinaryExpression::op.
std::shared_ptr< Expression > condition
TODO.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
const std::shared_ptr< Expression > & get_expression() const noexcept
Getter for member variable LonDifuse::expression.
std::shared_ptr< BinaryExpression > expression
Differential Expression.
std::shared_ptr< StatementBlock > statement_block
Block with statements vector.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< StatementBlock > statement_block
Block with statements vector.
void set_token(const ModToken &tok)
Set token for the current ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
ArgumentVector parameters
Vector of the parameters.
std::shared_ptr< Name > name
TODO.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
const NameVector & get_names() const noexcept
Getter for member variable LonDifuse::names.
symtab::SymbolTable * get_symbol_table() const override
Return associated symbol table for the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< Name > name
Name of ion.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
symtab::SymbolTable * get_symbol_table() const override
Return associated symbol table for the current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
type of ast::ReactionOperator
void set_symbol_table(symtab::SymbolTable *newsymtab) override
Set symbol table for the current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
const std::shared_ptr< Expression > & get_expression2() const noexcept
Getter for member variable ReactionStatement::expression2.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< Name > name3
TODO.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
bool is_state_block() const noexcept override
Check if the ast node is an instance of ast::StateBlock.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
Nonspecific * clone() const override
Return a copy of the current node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
static const std::string QueueTypeNames[]
string representation of ast::QueueType
std::shared_ptr< ModToken > token
token with location information
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::shared_ptr< ModToken > token
token with location information
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
const ArgumentVector & get_parameters() const noexcept override
Getter for member variable ProcedureBlock::parameters.
std::shared_ptr< Integer > n_state_vars
number of state vars used in solve
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
symtab::SymbolTable * get_symbol_table() const override
Return associated symbol table for the current ast node.
void set_symbol_table(symtab::SymbolTable *newsymtab) override
Set symbol table for the current ast node.
Represents EXTERNAL statement in NMODL.
std::string eval() const
Return enum value in string form.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< ModToken > token
token with location information
void emplace_back_statement(Statement *n)
Add member to statements by raw pointer.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
const std::shared_ptr< Unit > & get_unit() const noexcept
Getter for member variable Stepped::unit.
const std::shared_ptr< Expression > & get_condition() const noexcept
Getter for member variable WhileStatement::condition.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
const std::shared_ptr< Expression > & get_increment() const noexcept
Getter for member variable FromStatement::increment.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
void set_symbol_table(symtab::SymbolTable *newsymtab) override
Set symbol table for the current ast node.
static const std::string UnaryOpNames[]
string representation of ast::UnaryOp
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
bool is_bbcore_pointer_var() const noexcept override
Check if the ast node is an instance of ast::BbcorePointerVar.
std::shared_ptr< BABlock > bablock
Block to be called before.
bool is_for_all_statement() const noexcept override
Check if the ast node is an instance of ast::ForAllStatement.
Abstract base class for all visitors implementation.
std::shared_ptr< ModToken > token
token with location information
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
type of ast::ElectrodeCurVar
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
const std::shared_ptr< Unit > & get_unit() const noexcept
Getter for member variable ConstantVar::unit.
std::shared_ptr< Name > name
Name of the variable.
void set_symbol_table(symtab::SymbolTable *newsymtab) override
Set symbol table for the current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
BinaryOp
enum Type for binary operators in NMODL
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Double > min
TODO.
virtual std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
virtual void set_name(const std::string &name)
Set name for the AST node.
std::shared_ptr< Name > name
TODO.
std::shared_ptr< ModToken > token
token with location information
void set_token(const ModToken &tok)
Set token for the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
const std::shared_ptr< Expression > & get_expression() const noexcept
Getter for member variable WrappedExpression::expression.
bool is_plot_declaration() const noexcept override
Check if the ast node is an instance of ast::PlotDeclaration.
const ReadIonVarVector & get_readlist() const noexcept
Getter for member variable Useion::readlist.
std::shared_ptr< StatementBlock > variable_block
Statements to be declared in the functor.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
type of ast::WatchStatement
const std::shared_ptr< BABlock > & get_bablock() const noexcept
Getter for member variable BeforeBlock::bablock.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void insert_local_var(LocalVarVector::const_iterator position, NodeType &to, InputIterator first, InputIterator last)
Insert members to variables.
const NameVector & get_names() const noexcept
Getter for member variable Compartment::names.
void set_symbol_table(symtab::SymbolTable *newsymtab) override
Set symbol table for the current ast node.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
int get_value() const noexcept
Getter for member variable Integer::value.
std::shared_ptr< Number > start
TODO.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
Represent COMPARTMENT statement in NMODL.
bool is_statement_block() const noexcept override
Check if the ast node is an instance of ast::StatementBlock.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
const std::shared_ptr< Identifier > & get_name() const noexcept
Getter for member variable ParamAssign::name.
bool is_boolean() const noexcept override
Check if the ast node is an instance of ast::Boolean.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
Model * clone() const override
Return a copy of the current node.
std::shared_ptr< Unit > unit2
TODO.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
const std::shared_ptr< StatementBlock > & get_variable_block() const noexcept
Getter for member variable EigenNewtonSolverBlock::variable_block.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
UnitStateType get_value() const noexcept
Getter for member variable UnitState::value.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
const std::shared_ptr< Expression > & get_rhs() const noexcept
Getter for member variable BinaryExpression::rhs.
UnaryExpression * clone() const override
Return a copy of the current node.
LonDifuse * clone() const override
Return a copy of the current node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string eval() const
Return enum value in string form.
const std::shared_ptr< Name > & get_name() const noexcept
Getter for member variable FunctionBlock::name.
std::shared_ptr< Name > name
TODO.
Represents a statement in ASSIGNED or STATE block.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
type of ast::IndependentDefinition
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< StatementBlock > statement_block
Block with statements vector.
static const std::string FirstLastTypeNames[]
string representation of ast::FirstLastType
std::shared_ptr< BABlockType > type
Type of NMODL block.
Unit * clone() const override
Return a copy of the current node.
bool is_unary_expression() const noexcept override
Check if the ast node is an instance of ast::UnaryExpression.
std::shared_ptr< ModToken > token
token with location information
virtual std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Identifier > name
TODO.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::shared_ptr< ModToken > token
token with location information
PartialBlock * clone() const override
Return a copy of the current node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
Represents a variable in the ast::ConstantBlock.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
Suffix * clone() const override
Return a copy of the current node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
int get_value() const noexcept
Getter for member variable Boolean::value.
bool is_constant_block() const noexcept override
Check if the ast node is an instance of ast::ConstantBlock.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< Name > name2
TODO.
type of ast::FirstLastTypeIndex
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< StatementBlock > finalize_block
Statement block to be executed after calling newton solver.
const std::shared_ptr< Identifier > & get_name() const noexcept
Getter for member variable Argument::name.
WrappedExpression * clone() const override
Return a copy of the current node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
const std::shared_ptr< StatementBlock > & get_statement_block() const noexcept override
Getter for member variable BreakpointBlock::statement_block.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
void set_token(const ModToken &tok)
Set token for the current ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
UnitDef * clone() const override
Return a copy of the current node.
bool is_argument() const noexcept override
Check if the ast node is an instance of ast::Argument.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
ConstantVar * clone() const override
Return a copy of the current node.
std::shared_ptr< Expression > rhs
TODO.
void negate() override
Negate the value of current ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
symtab::ModelSymbolTable model_symtab
global symbol table for model
Represents a PARAMETER block in the NMODL.
type of ast::KineticBlock
bool is_integer() const noexcept override
Check if the ast node is an instance of ast::Integer.
virtual std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
bool is_first_last_type_index() const noexcept override
Check if the ast node is an instance of ast::FirstLastTypeIndex.
const std::shared_ptr< Expression > & get_expression() const noexcept
Getter for member variable Match::expression.
QueueExpressionType * clone() const override
Return a copy of the current node.
std::shared_ptr< ModToken > token
token with location information
type of ast::SolutionExpression
bool is_mutex_lock() const noexcept override
Check if the ast node is an instance of ast::MutexLock.
const std::shared_ptr< Expression > & get_lhs() const noexcept
Getter for member variable BinaryExpression::lhs.
std::shared_ptr< Name > byname
Name of the variable (TODO)
const std::shared_ptr< StatementBlock > & get_statement_block() const noexcept override
Getter for member variable ElseIfStatement::statement_block.
int eval() const
Return value of the ast node.
virtual double to_double()
StatementVector::const_iterator insert_statement(StatementVector::const_iterator position, const std::shared_ptr< Statement > &n)
Insert member to statements.
std::string eval() const
Return enum value in string form.
bool is_conserve() const noexcept override
Check if the ast node is an instance of ast::Conserve.
std::shared_ptr< Expression > rhs
RHS of the binary expression.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< ModToken > token
token with location information
Represents a PLOT statement in the NMODL.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
virtual Node * clone() const override
Return a copy of the current node.
Represents a INDEPENDENT block in the NMODL.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::vector< std::shared_ptr< ConstantStatement > > ConstantStatementVector
bool is_function_table_block() const noexcept override
Check if the ast node is an instance of ast::FunctionTableBlock.
std::shared_ptr< ModToken > token
token with location information
bool is_expression_statement() const noexcept override
Check if the ast node is an instance of ast::ExpressionStatement.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
void set_symbol_table(symtab::SymbolTable *newsymtab) override
Set symbol table for the current ast node.
void set_symbol_table(symtab::SymbolTable *newsymtab) override
Set symbol table for the current ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
Represent MUTEXUNLOCK statement in NMODL.
void set_token(const ModToken &tok)
Set token for the current ast node.
UnitStateType
enum type used for UNIT_ON or UNIT_OFF state
DiscreteBlock * clone() const override
Return a copy of the current node.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
DiffEqExpression * clone() const override
Return a copy of the current node.
Represents USEION statement in NMODL.
void set_token(const ModToken &tok)
Set token for the current ast node.
std::string get_nmodl_name() const noexcept override
Return NMODL statement of ast node as std::string.
bool is_assigned_block() const noexcept override
Check if the ast node is an instance of ast::AssignedBlock.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::vector< std::shared_ptr< WriteIonVar > > WriteIonVarVector
Represent WATCH statement in NMODL.
std::shared_ptr< ModToken > token
token with location information
void set_token(const ModToken &tok)
Set token for the current ast node.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< Number > to
TODO.
void set_token(const ModToken &tok)
Set token for the current ast node.
virtual std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
const PlotVarVector & get_variables() const noexcept
Getter for member variable PlotDeclaration::variables.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
size_t erase_statement(std::unordered_set< Statement *> &to_be_erased)
Erase non-consecutive members to statements.
std::shared_ptr< Identifier > name
TODO.
std::shared_ptr< Name > name
Name of the partial block.
bool is_range_var() const noexcept override
Check if the ast node is an instance of ast::RangeVar.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
std::shared_ptr< ModToken > token
token with location information
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
bool is_ontology_statement() const noexcept override
Check if the ast node is an instance of ast::OntologyStatement.
type of ast::AssignedDefinition
void emplace_back_global_var(GlobalVar *n)
Add member to variables by raw pointer.
std::shared_ptr< Unit > unit
Unit if specified.
const std::shared_ptr< Name > & get_name() const noexcept
Getter for member variable PartialBlock::name.
std::string get_node_type_name() const noexcept override
Return type (ast::AstNodeType) of ast node as std::string.
std::shared_ptr< Double > value
TODO.
InitialBlock * clone() const override
Return a copy of the current node.
SectionVar * clone() const override
Return a copy of the current node.
symtab::SymbolTable * get_symbol_table() const override
Return associated symbol table for the current ast node.
Represent newton solver solution block based on Eigen.
const std::shared_ptr< Name > & get_del2() const noexcept
Getter for member variable PartialBoundary::del2.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
AstNodeType get_node_type() const noexcept override
Return type (ast::AstNodeType) of ast node.
std::shared_ptr< Expression > expression
Expression that is being wrapped.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
const std::shared_ptr< Number > & get_min() const noexcept
Getter for member variable NumberRange::min.
UnaryOp get_value() const noexcept
Getter for member variable UnaryOperator::value.
StatementVector solve_statements
solve blocks to be called or generated
std::shared_ptr< Ast > get_shared_ptr() override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
const ModToken * get_token() const noexcept override
Return associated token for the current ast node.
void set_token(const ModToken &tok)
Set token for the current ast node.
StatementVector::const_iterator erase_statement(StatementVector::const_iterator first, StatementVector::const_iterator last)
Erase members to statements.
bool is_expression() const noexcept override
Check if the ast node is an instance of ast::Expression.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
std::shared_ptr< const Ast > get_shared_ptr() const override
Get std::shared_ptr from this pointer of the current ast node.
virtual Number * clone() const override
Return a copy of the current node.